// EllipticCurve.cpp: implementation of the CEllipticCurve class.
//
//////////////////////////////////////////////////////////////////////

#include "EllipticCurve.h"
#include "ecconst.h"
#include "sm3hash.h"
#include "Mpi.h"
#include <malloc.h>
void printinfohex(char *info, unsigned char * output, int len);

unsigned char g_pInv2[DCS_ECC_KEY_LENGTH] = {0x7f ,0xff ,0xff ,0xff ,0x7f ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0x80 ,0x00 ,0x00 ,0x00 ,0x80 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00};


unsigned char g_acTable[DCS_ECC_KEY_LENGTH*8*2-2][DCS_ECC_KEY_LENGTH] = {
{ 0x56, 0xce, 0xfd, 0x60, 0xd7, 0xc8, 0x7c, 0x00, 0x0d, 0x58, 0xef, 0x57, 0xfa, 0x73, 0xba, 0x4d, 0x9c, 0x0d, 0xfa, 0x08, 0xc0, 0x8a, 0x73, 0x31, 0x49, 0x5c, 0x2e, 0x1d, 0xa3, 0xf2, 0xbd, 0x52}, 
{ 0x31, 0xb7, 0xe7, 0xe6, 0xcc, 0x81, 0x89, 0xf6, 0x68, 0x53, 0x5c, 0xe0, 0xf8, 0xea, 0xf1, 0xbd, 0x6d, 0xe8, 0x4c, 0x18, 0x2f, 0x6c, 0x8e, 0x71, 0x6f, 0x78, 0x0d, 0x3a, 0x97, 0x0a, 0x23, 0xc3}, 
{ 0xc2, 0x39, 0x50, 0x71, 0x05, 0xc6, 0x83, 0x24, 0x2a, 0x81, 0x05, 0x2f, 0xf6, 0x41, 0xed, 0x69, 0x00, 0x9a, 0x08, 0x4a, 0xd5, 0xcc, 0x93, 0x7d, 0xb2, 0x16, 0x46, 0xcd, 0x34, 0xa0, 0xce, 0xd5}, 
{ 0xb1, 0xbf, 0x7e, 0xc4, 0x08, 0x0f, 0x3c, 0x87, 0x35, 0xf1, 0x29, 0x4a, 0xc0, 0xdb, 0x19, 0x68, 0x6b, 0xee, 0x2e, 0x96, 0xab, 0x8c, 0x71, 0xfb, 0x7a, 0x25, 0x36, 0x66, 0xcb, 0x66, 0xe0, 0x09}, 
{ 0xb9, 0xc3, 0xfa, 0xeb, 0x4b, 0x16, 0x10, 0x71, 0x3d, 0xb4, 0x33, 0x3d, 0x4e, 0x86, 0x0e, 0x64, 0xd4, 0xea, 0x35, 0xd6, 0x0c, 0x1c, 0x29, 0xbb, 0x67, 0x5d, 0x82, 0x2d, 0xed, 0x0b, 0xb9, 0x16}, 
{ 0xc5, 0x19, 0xb3, 0x09, 0xec, 0xf7, 0x26, 0x9c, 0x24, 0x91, 0xd2, 0xde, 0x9a, 0xcc, 0xf2, 0xbe, 0x03, 0x66, 0xa8, 0xa0, 0x30, 0x24, 0xb3, 0xe0, 0x3c, 0x28, 0x6d, 0xa2, 0xcf, 0xd3, 0x1a, 0x3e}, 
{ 0x35, 0x64, 0x82, 0x33, 0xf5, 0x54, 0xae, 0x51, 0xbb, 0xce, 0x44, 0xef, 0x5d, 0xb3, 0xe4, 0x19, 0xea, 0x13, 0x3c, 0xd2, 0x48, 0xa9, 0x3e, 0x25, 0x55, 0x64, 0x5b, 0xbc, 0x87, 0x04, 0xfb, 0x68}, 
{ 0x04, 0xd7, 0xac, 0x60, 0xf6, 0xd9, 0x75, 0xef, 0x61, 0x17, 0xbc, 0xa9, 0xce, 0x88, 0x5d, 0xd6, 0x15, 0x4b, 0x18, 0x70, 0xa6, 0xa6, 0x51, 0x66, 0x44, 0x11, 0xa9, 0xa3, 0x0e, 0xca, 0x20, 0x46}, 
{ 0x25, 0xd3, 0xde, 0xbd, 0x09, 0x50, 0xd1, 0x80, 0xa6, 0xd5, 0xc2, 0xb5, 0x81, 0x7f, 0x23, 0x29, 0x79, 0x17, 0x34, 0xcd, 0x03, 0xe5, 0x56, 0x5c, 0xa3, 0x26, 0x41, 0xe5, 0x60, 0x24, 0x66, 0x6c}, 
{ 0x92, 0xd9, 0x9a, 0x70, 0x67, 0x9d, 0x61, 0xef, 0xb9, 0x38, 0xc4, 0x06, 0xdd, 0x5c, 0xb0, 0xe1, 0x04, 0x58, 0x89, 0x51, 0x20, 0xe2, 0x08, 0xb4, 0xd3, 0x9e, 0x10, 0x03, 0x03, 0xfa, 0x10, 0xa2}, 
{ 0x97, 0x66, 0x23, 0x89, 0xf3, 0x6c, 0xe6, 0x43, 0xa4, 0x7d, 0xcf, 0x64, 0x4f, 0x70, 0x06, 0x51, 0xe9, 0x88, 0x79, 0x48, 0x43, 0x79, 0x7b, 0x0c, 0x4a, 0x69, 0xc8, 0x06, 0xe7, 0x86, 0x15, 0xc2}, 
{ 0xcd, 0x4d, 0x94, 0x49, 0xae, 0xa5, 0xca, 0xc5, 0x32, 0x8b, 0x8d, 0x67, 0xd4, 0xae, 0x95, 0x6f, 0x5e, 0xb0, 0x6c, 0x45, 0x15, 0xff, 0x01, 0xbd, 0x17, 0xee, 0xf5, 0x8b, 0xf8, 0x66, 0xb3, 0x3f}, 
{ 0xdb, 0xe2, 0x64, 0xa2, 0xee, 0x1a, 0xd8, 0x80, 0x5b, 0x7d, 0xed, 0x54, 0x04, 0xd3, 0xfa, 0x8c, 0x94, 0xa7, 0x80, 0xbe, 0xb0, 0xed, 0xa9, 0xd8, 0xce, 0x05, 0x41, 0x8c, 0x9f, 0xdb, 0x05, 0x89}, 
{ 0x3f, 0x90, 0x1c, 0x78, 0x48, 0xbe, 0xf8, 0xe0, 0x9f, 0x71, 0xbe, 0x12, 0x67, 0xce, 0xc8, 0x22, 0xf6, 0x00, 0x62, 0xc1, 0x77, 0xa5, 0x72, 0x77, 0x7a, 0xeb, 0xcd, 0x67, 0x07, 0x99, 0x87, 0xf5}, 
{ 0x32, 0xa4, 0x99, 0xf4, 0x5d, 0x6d, 0x05, 0x9c, 0xe9, 0xf9, 0x5e, 0x03, 0xde, 0x5d, 0x96, 0x78, 0x46, 0x24, 0x05, 0xf2, 0xec, 0x37, 0xfd, 0xdb, 0xce, 0x9c, 0xd3, 0x3d, 0x29, 0xa5, 0x98, 0x85}, 
{ 0x8f, 0xb9, 0x3b, 0xa2, 0x19, 0xf0, 0xfa, 0x22, 0xea, 0xb9, 0x02, 0xf4, 0x2b, 0x28, 0xbe, 0xfb, 0x79, 0x91, 0x06, 0xa7, 0x22, 0xc9, 0x77, 0x55, 0xb7, 0xa7, 0xc4, 0xac, 0x40, 0x43, 0x8c, 0x8e}, 
{ 0xc2, 0x12, 0x39, 0xb0, 0x6a, 0x82, 0xa6, 0x8f, 0x65, 0xb2, 0xbd, 0xd6, 0xb5, 0x71, 0xe3, 0x66, 0x83, 0x9a, 0xe7, 0x8e, 0x68, 0x85, 0xba, 0x35, 0x5c, 0x27, 0xfe, 0x8e, 0x7e, 0xed, 0x5a, 0xbc}, 
{ 0x35, 0x0f, 0xd6, 0x83, 0x2d, 0x5d, 0x8a, 0x71, 0x50, 0xdd, 0x06, 0xb9, 0x5f, 0xf7, 0x3e, 0xa8, 0xa5, 0x1b, 0x08, 0x78, 0x98, 0x92, 0x63, 0x99, 0x26, 0x42, 0x6a, 0x1c, 0x44, 0xed, 0xf0, 0x06}, 
{ 0x33, 0xfc, 0xaa, 0x40, 0x55, 0xc8, 0x7a, 0xeb, 0x61, 0xc0, 0x22, 0xaa, 0x2b, 0x71, 0x25, 0x91, 0x76, 0xe1, 0xe9, 0x65, 0x69, 0x57, 0xf8, 0xb1, 0xd1, 0x95, 0x29, 0x84, 0xa4, 0x2c, 0x16, 0x0f}, 
{ 0x67, 0xa9, 0x2a, 0x7c, 0x27, 0x6d, 0x6c, 0x81, 0xf9, 0xa8, 0x90, 0x6e, 0x4c, 0xe8, 0xd9, 0x74, 0x2e, 0x04, 0x36, 0x2a, 0x29, 0x62, 0x21, 0x84, 0xf2, 0xf3, 0xf6, 0x2c, 0x49, 0x02, 0xc5, 0x05}, 
{ 0x0f, 0x29, 0xdd, 0x95, 0x94, 0x67, 0x35, 0xef, 0x9e, 0x2f, 0x25, 0x8b, 0x58, 0x1d, 0xe4, 0x08, 0x04, 0xd8, 0xb0, 0xd2, 0x6b, 0xeb, 0x0e, 0xf2, 0xd8, 0xd8, 0x22, 0x79, 0xed, 0xb4, 0x1f, 0x35}, 
{ 0x4f, 0x19, 0x6e, 0x37, 0xa7, 0x9f, 0xb5, 0xc6, 0xff, 0xa9, 0x42, 0xd8, 0xc5, 0x89, 0x17, 0xb7, 0x15, 0x68, 0xbf, 0xbb, 0x77, 0x07, 0xcf, 0x31, 0x93, 0x89, 0x34, 0x18, 0x17, 0x2f, 0x05, 0xf0}, 
{ 0x52, 0x8d, 0xcb, 0x8d, 0x80, 0xe8, 0x60, 0x35, 0x96, 0x02, 0xca, 0x42, 0x1a, 0xa4, 0xa4, 0x1b, 0xae, 0xd8, 0x34, 0x5f, 0x8e, 0xd3, 0x8a, 0xea, 0x8a, 0x01, 0x7b, 0xdc, 0x76, 0xff, 0xc6, 0x24}, 
{ 0xb1, 0xab, 0xb7, 0x2b, 0x46, 0xda, 0x3b, 0x76, 0xf8, 0x32, 0x20, 0xcd, 0xe8, 0xab, 0x66, 0x37, 0xbd, 0xea, 0x0a, 0xbb, 0x78, 0x06, 0x70, 0x1f, 0x9a, 0x76, 0x2a, 0x71, 0x50, 0x72, 0x6c, 0xfd}, 
{ 0x6a, 0x06, 0x48, 0x89, 0x01, 0x92, 0xe2, 0xaa, 0x7e, 0x4e, 0x07, 0x84, 0xab, 0x24, 0xf3, 0x35, 0xc9, 0x5c, 0x09, 0x59, 0x74, 0x29, 0xa1, 0x1c, 0x7d, 0x1a, 0xc6, 0xee, 0xdf, 0x3d, 0x71, 0xc7}, 
{ 0x94, 0x80, 0x7b, 0x00, 0x16, 0x7b, 0xe8, 0x3c, 0xa5, 0x77, 0xd4, 0xb8, 0x51, 0x31, 0xe5, 0xf5, 0xba, 0x22, 0x0b, 0x29, 0xf5, 0xab, 0x25, 0x9e, 0x9f, 0x2a, 0xb4, 0x3c, 0x57, 0x4a, 0x70, 0xee}, 
{ 0xe6, 0xa6, 0x73, 0xaa, 0x7e, 0xef, 0x21, 0x80, 0xaf, 0x18, 0x25, 0x2f, 0x1b, 0x75, 0xda, 0xb6, 0x7a, 0x69, 0x84, 0xa3, 0x2f, 0x85, 0x52, 0x5e, 0x49, 0x22, 0x26, 0x2d, 0x13, 0xa9, 0x82, 0x1c}, 
{ 0x7b, 0x24, 0x91, 0xf5, 0x6b, 0xc8, 0xb2, 0xc9, 0x97, 0x29, 0x26, 0xff, 0x11, 0x22, 0xab, 0xbd, 0x74, 0xde, 0xc6, 0x06, 0xe9, 0xc0, 0x6c, 0xb8, 0x78, 0x06, 0xed, 0xd7, 0x56, 0xa2, 0x85, 0x2e}, 
{ 0x60, 0xa9, 0xa3, 0x80, 0x52, 0x5d, 0xd8, 0x90, 0x5a, 0xc4, 0xbc, 0xfd, 0xda, 0xf7, 0x4d, 0x4e, 0xbd, 0xec, 0x57, 0x9c, 0x5e, 0x68, 0xd4, 0x5f, 0xa4, 0xab, 0x5e, 0x0b, 0x2a, 0x35, 0x43, 0x0c}, 
{ 0xd6, 0x60, 0x00, 0xfa, 0xc9, 0xce, 0xd9, 0x8e, 0x16, 0x66, 0x5a, 0x96, 0xb6, 0xb5, 0x97, 0x4d, 0x55, 0xd2, 0xe0, 0xa1, 0xac, 0x91, 0x63, 0x55, 0xb6, 0xcc, 0x29, 0xb6, 0x59, 0x16, 0x28, 0xe4}, 
{ 0x39, 0xd9, 0x9b, 0xbf, 0x92, 0xf6, 0x9b, 0x5b, 0xb1, 0x18, 0xbe, 0x11, 0x2c, 0x2b, 0x8c, 0x73, 0xb3, 0x54, 0x1b, 0xd2, 0x90, 0xbe, 0xd3, 0x20, 0x31, 0x2d, 0x5c, 0xa6, 0x74, 0x82, 0xd0, 0x23}, 
{ 0xa9, 0xc3, 0xcd, 0x42, 0x27, 0x1b, 0x24, 0x3c, 0x29, 0x94, 0xdb, 0x86, 0x93, 0x1d, 0x37, 0x26, 0x7f, 0x37, 0x97, 0x46, 0x71, 0x48, 0x72, 0x94, 0x2b, 0x87, 0x5a, 0x20, 0xcc, 0x7c, 0xbe, 0x33}, 
{ 0xcf, 0x0c, 0x46, 0xb0, 0xbe, 0x47, 0x1f, 0x20, 0x05, 0x57, 0x2c, 0x01, 0xd4, 0x78, 0x07, 0xc1, 0x4e, 0x29, 0x68, 0x24, 0xa4, 0x87, 0x70, 0xbf, 0x2f, 0x23, 0xee, 0x35, 0x93, 0x3e, 0x47, 0x17}, 
{ 0x7b, 0x75, 0x17, 0x53, 0x19, 0x6d, 0xe8, 0xeb, 0xc2, 0x4c, 0x5d, 0xfd, 0x09, 0x52, 0xa7, 0xd6, 0x81, 0x48, 0xc9, 0xb9, 0x00, 0x80, 0x04, 0x1c, 0xd2, 0xeb, 0x1f, 0x23, 0x3d, 0x54, 0x41, 0x84}, 
{ 0xb0, 0xbe, 0x74, 0x4f, 0x06, 0x25, 0x14, 0x60, 0xa9, 0x75, 0x94, 0x6e, 0x2f, 0xee, 0x6d, 0x98, 0x50, 0xf8, 0x57, 0xb5, 0xa9, 0xbf, 0xa0, 0xa1, 0x3c, 0xd4, 0xe9, 0x58, 0xb1, 0xdd, 0x35, 0xb9}, 
{ 0x23, 0x2f, 0x9d, 0xf8, 0x7b, 0x8d, 0xf8, 0xc3, 0xde, 0xc7, 0xd5, 0x39, 0x2e, 0xad, 0x90, 0x07, 0x19, 0x9e, 0x1f, 0xb9, 0x72, 0x0c, 0x83, 0x30, 0x11, 0x33, 0x24, 0x1b, 0x67, 0x59, 0x01, 0x48}, 
{ 0x9a, 0x65, 0x82, 0x34, 0x81, 0x39, 0xaf, 0x0d, 0x03, 0x87, 0xae, 0xb3, 0xa3, 0x9c, 0x0e, 0xc9, 0xb3, 0xcf, 0xc7, 0x74, 0x9c, 0xbe, 0x9a, 0xae, 0xfd, 0xe9, 0xda, 0x89, 0xb2, 0xa8, 0xdd, 0xa8}, 
{ 0x23, 0x4a, 0x32, 0xa7, 0xd7, 0xb8, 0x8d, 0xb8, 0x65, 0x50, 0x28, 0xfc, 0x0b, 0x53, 0x03, 0x7f, 0xbf, 0x2f, 0x59, 0xa7, 0x55, 0x4e, 0xb2, 0x93, 0x47, 0xf0, 0x19, 0xdb, 0xcf, 0xc3, 0x5c, 0xce}, 
{ 0x52, 0x8d, 0x42, 0xbd, 0xd7, 0x4a, 0xf9, 0xcc, 0xb8, 0xe5, 0x81, 0x55, 0x51, 0x97, 0x28, 0x0b, 0x1d, 0xf1, 0x76, 0x98, 0xe5, 0x06, 0xea, 0x02, 0x06, 0xf4, 0xb5, 0xb6, 0x44, 0x60, 0x8d, 0x09}, 
{ 0x22, 0xdc, 0x58, 0xc3, 0xcf, 0x90, 0x28, 0x84, 0x56, 0xd6, 0xab, 0x0b, 0x0d, 0x75, 0x1e, 0xef, 0x24, 0x59, 0x26, 0xac, 0xc4, 0x73, 0x2a, 0xca, 0x05, 0x58, 0x9f, 0x0b, 0xcb, 0x5b, 0x0e, 0x7e}, 
{ 0x1a, 0x20, 0x2b, 0x9a, 0xbe, 0xfe, 0x35, 0x56, 0x5f, 0xb1, 0x2b, 0x93, 0x5e, 0xbd, 0xa7, 0xdd, 0xe8, 0xd7, 0x99, 0x22, 0xfa, 0x05, 0x20, 0xad, 0xe1, 0xd6, 0x4e, 0x56, 0xbe, 0xf8, 0xcd, 0x77}, 
{ 0x69, 0x67, 0xb9, 0x3e, 0x45, 0x13, 0x27, 0x8f, 0x5b, 0xa5, 0x64, 0xf3, 0x67, 0x17, 0x00, 0x84, 0x93, 0xf6, 0x1a, 0xfc, 0x9c, 0xc0, 0xd1, 0x92, 0x99, 0xb8, 0x11, 0x65, 0xd1, 0xc2, 0x6f, 0xde}, 
{ 0x05, 0x3a, 0xd2, 0xd1, 0xfb, 0xdb, 0xac, 0x7e, 0xdb, 0xf1, 0x41, 0x1d, 0xb4, 0x3a, 0xef, 0x64, 0xf9, 0xda, 0xb3, 0xb4, 0xef, 0xd0, 0x36, 0x52, 0xd4, 0x95, 0xc3, 0x29, 0x69, 0x58, 0x6b, 0x50}, 
{ 0x08, 0x4c, 0x55, 0xc0, 0xb1, 0x3d, 0xbb, 0x73, 0xd5, 0x99, 0xf3, 0xa7, 0xac, 0x81, 0xfe, 0x23, 0xf1, 0x6d, 0xab, 0xf6, 0x0a, 0x5f, 0x16, 0x20, 0xcb, 0x53, 0xb5, 0xa6, 0x73, 0xd5, 0x92, 0x99}, 
{ 0xdd, 0x1c, 0xe9, 0xc9, 0x6c, 0x69, 0xde, 0x43, 0x86, 0xc8, 0xb2, 0xdc, 0x72, 0x87, 0x7b, 0x7a, 0xed, 0x31, 0xbe, 0xa1, 0x3b, 0x13, 0x71, 0x01, 0xae, 0xd3, 0x86, 0x89, 0xb1, 0x3d, 0x44, 0xf9}, 
{ 0x3d, 0x33, 0x17, 0x94, 0x49, 0xfd, 0x80, 0x4b, 0xea, 0xd5, 0xb3, 0x1a, 0x3b, 0xcf, 0xff, 0xf1, 0x14, 0x01, 0x42, 0xa0, 0x84, 0x74, 0x0d, 0x51, 0xfc, 0xcd, 0x5d, 0x96, 0xc2, 0x7b, 0xcf, 0x4c}, 
{ 0xbd, 0xb8, 0x02, 0x09, 0x76, 0x20, 0x66, 0xbb, 0xbf, 0x48, 0x33, 0x8b, 0x0a, 0x12, 0x1b, 0xbf, 0x2c, 0x59, 0x3d, 0x24, 0x32, 0xd3, 0x4f, 0x10, 0x60, 0x8a, 0x9a, 0x79, 0x43, 0x4d, 0x1e, 0x8c}, 
{ 0x78, 0xbd, 0xa5, 0xaf, 0x87, 0x14, 0xd0, 0x18, 0x79, 0x90, 0xe3, 0xb9, 0xaa, 0x44, 0x3c, 0x61, 0xd9, 0xbc, 0x25, 0xa6, 0x96, 0x0b, 0x34, 0x3f, 0xda, 0x72, 0x50, 0xf8, 0xa3, 0xb7, 0x8f, 0xc4}, 
{ 0x80, 0x27, 0x25, 0xf4, 0xf3, 0xed, 0x58, 0x0b, 0x9b, 0xb4, 0x6d, 0xc7, 0x84, 0x98, 0x82, 0xb8, 0xa6, 0xda, 0xc9, 0x05, 0x2b, 0xcd, 0x9f, 0xee, 0x42, 0xed, 0x9a, 0xed, 0x86, 0x15, 0x43, 0xb3}, 
{ 0xf3, 0x34, 0xdd, 0xdf, 0xfe, 0xb4, 0x11, 0x2c, 0xda, 0x1e, 0x50, 0xb7, 0xd2, 0xbf, 0x3b, 0xb2, 0x7f, 0x4c, 0xf9, 0x04, 0xfc, 0x0f, 0x2e, 0x5e, 0xb0, 0x31, 0x5c, 0xba, 0x69, 0x0f, 0x2e, 0xeb}, 
{ 0xd7, 0xb6, 0x98, 0x83, 0x9e, 0xa2, 0x85, 0x94, 0x88, 0x15, 0xa3, 0xad, 0x83, 0x9d, 0x37, 0xfa, 0x78, 0x74, 0x3d, 0xf2, 0xa2, 0x56, 0xb4, 0x78, 0xec, 0x71, 0xd4, 0x51, 0xb1, 0x3c, 0x97, 0x08}, 
{ 0x09, 0x41, 0xfa, 0xbc, 0xa1, 0x37, 0x62, 0x4b, 0x1f, 0x94, 0x63, 0x5e, 0x6c, 0xf1, 0xbb, 0x69, 0xf1, 0x9c, 0x4a, 0x70, 0x77, 0xc1, 0xdc, 0x63, 0xbc, 0xa8, 0x12, 0x70, 0x01, 0x33, 0xfe, 0x46}, 
{ 0xa1, 0x1c, 0x33, 0x24, 0xff, 0x6c, 0x84, 0x04, 0x25, 0x8e, 0xde, 0x25, 0xfe, 0xb6, 0xdc, 0x13, 0x96, 0xc9, 0x67, 0x0b, 0x5d, 0x0c, 0x66, 0x8a, 0x8f, 0x32, 0xa3, 0x3b, 0x1c, 0xa0, 0x5c, 0x53}, 
{ 0x13, 0xcc, 0xa2, 0xbd, 0xbe, 0xbc, 0x95, 0x6e, 0x18, 0xd3, 0xc1, 0x32, 0x19, 0x2b, 0x3b, 0xe3, 0x61, 0x19, 0x6e, 0xae, 0x48, 0xc3, 0x08, 0x6c, 0x7d, 0xe5, 0xb1, 0x99, 0xab, 0x72, 0x0f, 0x1f}, 
{ 0xea, 0xd4, 0xfb, 0x5d, 0x2a, 0xc4, 0x7e, 0xc1, 0xdd, 0x20, 0x87, 0x20, 0x6a, 0xf3, 0xf7, 0x3e, 0xad, 0xe1, 0x86, 0x78, 0xd2, 0x83, 0xfe, 0x2e, 0x62, 0xc8, 0xa9, 0xe4, 0xb2, 0xf1, 0xe3, 0x13}, 
{ 0xa3, 0x57, 0x56, 0x33, 0x25, 0x15, 0xaa, 0xc0, 0x9a, 0x89, 0xc8, 0x25, 0x25, 0x4a, 0xd7, 0xee, 0x70, 0x3b, 0x3f, 0x01, 0xf0, 0x09, 0xc6, 0x58, 0x18, 0xda, 0x9e, 0xc6, 0x38, 0x8a, 0x15, 0xa7}, 
{ 0xe5, 0xb8, 0x72, 0x33, 0x9b, 0x4a, 0xff, 0x82, 0x8a, 0x67, 0x02, 0x99, 0xe6, 0xb3, 0xa5, 0x3c, 0x28, 0xf7, 0xc0, 0xd8, 0xfc, 0x6d, 0xe6, 0x6e, 0x40, 0xd2, 0xc0, 0x8b, 0xff, 0x99, 0xc7, 0x3e}, 
{ 0xb7, 0x13, 0xcc, 0x4a, 0x90, 0xc6, 0x8b, 0x79, 0xaa, 0xd6, 0x9d, 0x5b, 0x53, 0x25, 0xe7, 0x9b, 0xbd, 0xa4, 0xa4, 0x6a, 0x4b, 0x56, 0xf5, 0xcc, 0x1f, 0x71, 0xef, 0x51, 0xab, 0xe8, 0xe7, 0x9d}, 
{ 0x20, 0x46, 0x43, 0xbb, 0xae, 0x0b, 0x27, 0xd5, 0xc5, 0xac, 0x01, 0x79, 0xd6, 0xa5, 0x74, 0x3f, 0xc6, 0xcd, 0xee, 0x12, 0xf4, 0xa7, 0x32, 0x24, 0xb4, 0x55, 0xb4, 0x5d, 0xff, 0x71, 0x1a, 0x97}, 
{ 0x50, 0x02, 0x37, 0x95, 0xad, 0x36, 0x9e, 0x5f, 0xa6, 0xb4, 0xc2, 0x86, 0x7d, 0x4f, 0xde, 0x9e, 0xf7, 0x77, 0xa8, 0x11, 0xa9, 0xd9, 0x3e, 0x24, 0xcb, 0xe6, 0x7e, 0xdc, 0x6f, 0x15, 0xf8, 0xad}, 
{ 0xbf, 0x34, 0x1d, 0xbf, 0x14, 0x11, 0xda, 0xb6, 0x41, 0x8a, 0xf3, 0x92, 0x25, 0x2e, 0x88, 0x0e, 0xf2, 0xe0, 0xda, 0x1c, 0x22, 0xe2, 0x29, 0xc0, 0x77, 0x43, 0x2b, 0x28, 0x3a, 0xa6, 0x4d, 0xfb}, 
{ 0x49, 0x02, 0xf2, 0x15, 0xfd, 0x29, 0xfa, 0x03, 0x15, 0xee, 0x40, 0x52, 0x8a, 0x0e, 0xfe, 0xb1, 0xbc, 0xd1, 0x01, 0xd3, 0x5d, 0x5f, 0x45, 0x34, 0x59, 0xb4, 0x59, 0x22, 0xa0, 0xbe, 0x16, 0xb6}, 
{ 0x3d, 0x25, 0x1b, 0x54, 0xe1, 0x0d, 0x58, 0x1f, 0x71, 0xe8, 0x34, 0xcf, 0x86, 0x89, 0x6c, 0x10, 0x51, 0xe4, 0x67, 0x07, 0xfd, 0x55, 0x86, 0x56, 0x68, 0xa8, 0x84, 0x05, 0xae, 0x53, 0xc1, 0xe9}, 
{ 0x87, 0x89, 0x1d, 0x33, 0xfb, 0x98, 0xb4, 0xd8, 0x59, 0x31, 0xf6, 0x83, 0x1a, 0x8d, 0x8c, 0x11, 0xee, 0xaf, 0x72, 0x98, 0x53, 0xe5, 0x26, 0xfe, 0x18, 0x84, 0xd5, 0xb0, 0xee, 0xb1, 0x90, 0x32}, 
{ 0xc7, 0x14, 0xfe, 0x0a, 0x7e, 0x7c, 0xb0, 0xc9, 0x8a, 0xc0, 0x84, 0xb3, 0x54, 0xd5, 0xc0, 0x19, 0xae, 0xf7, 0x85, 0xed, 0xb2, 0xd9, 0x76, 0xc6, 0xb4, 0x87, 0xb5, 0x25, 0x5b, 0xa8, 0xa1, 0x8b}, 
{ 0x7d, 0x32, 0x57, 0xb3, 0xf0, 0x55, 0x3a, 0x6e, 0xbe, 0x64, 0x03, 0x74, 0x92, 0x8d, 0x3a, 0xf4, 0x66, 0xd4, 0x21, 0x66, 0x2f, 0x65, 0x29, 0x54, 0x27, 0x2b, 0x34, 0x20, 0x4b, 0x90, 0x86, 0xa7}, 
{ 0x01, 0x76, 0x7f, 0xed, 0x76, 0xe0, 0x13, 0x82, 0x81, 0xb3, 0x09, 0x0c, 0x5e, 0xe3, 0xe6, 0x1c, 0x15, 0x00, 0x8c, 0x93, 0x51, 0xc8, 0xbd, 0x2a, 0xee, 0xae, 0xf3, 0xb4, 0x48, 0x52, 0x5e, 0xc8}, 
{ 0xe9, 0x65, 0xd4, 0x1c, 0x88, 0x3d, 0xa3, 0x19, 0xda, 0xe5, 0x0f, 0x00, 0xfa, 0x46, 0xdb, 0xee, 0x36, 0xe7, 0xd0, 0x05, 0x1c, 0x45, 0x67, 0x21, 0xb6, 0xcf, 0xaa, 0x3c, 0x6b, 0x39, 0x10, 0x5c}, 
{ 0xa9, 0xc7, 0xb3, 0x3e, 0xcb, 0x50, 0xd7, 0x96, 0x9b, 0x41, 0x22, 0x37, 0xd4, 0x9e, 0x8c, 0x08, 0x09, 0x04, 0x12, 0x00, 0x44, 0xe6, 0x61, 0x9d, 0x55, 0x9b, 0x2e, 0xf1, 0x19, 0x19, 0x38, 0xc2}, 
{ 0x92, 0xf7, 0x1d, 0xf5, 0x7e, 0x10, 0xe1, 0xdf, 0x7e, 0xf0, 0x41, 0xf6, 0x5b, 0xdd, 0x5d, 0xfd, 0x05, 0x98, 0x2d, 0x23, 0x6e, 0x36, 0x99, 0xd4, 0xce, 0x71, 0xbe, 0xaf, 0x6d, 0x1a, 0x20, 0x66}, 
{ 0xc8, 0xce, 0xe9, 0xfb, 0x6e, 0xcd, 0x48, 0x5b, 0xbd, 0xa1, 0x4d, 0xc3, 0x48, 0x6c, 0xc3, 0x41, 0xa5, 0xf6, 0x22, 0xfc, 0x48, 0xe9, 0x1c, 0x17, 0x44, 0xb0, 0x77, 0x0a, 0xe5, 0xe0, 0x9d, 0xb6}, 
{ 0x75, 0x07, 0x57, 0x3e, 0xcb, 0x8d, 0x95, 0x9d, 0x0d, 0x57, 0x9b, 0x4b, 0xf9, 0x74, 0xf8, 0x3d, 0xa9, 0x49, 0x55, 0xe3, 0x51, 0x1a, 0xa5, 0xd7, 0x41, 0x40, 0xfe, 0xd8, 0xec, 0x6d, 0x03, 0xd6}, 
{ 0x6f, 0xc0, 0x52, 0x78, 0x24, 0xc7, 0xfe, 0xb4, 0x2d, 0x13, 0x81, 0x23, 0x07, 0x7f, 0xc1, 0xb2, 0x21, 0x12, 0xbe, 0xdb, 0xa1, 0xfb, 0x3f, 0xc1, 0xd9, 0x68, 0x75, 0x2e, 0xc6, 0x76, 0xc5, 0x56}, 
{ 0x1d, 0x6e, 0x45, 0x5d, 0xb4, 0xc5, 0x12, 0x46, 0x77, 0x23, 0x66, 0x15, 0x41, 0xdc, 0x81, 0x6a, 0xc7, 0x79, 0xaf, 0xc4, 0x54, 0x3b, 0xb1, 0x54, 0xc1, 0xed, 0x0b, 0x5f, 0x44, 0x3e, 0xeb, 0x16}, 
{ 0x87, 0x08, 0xf3, 0x3e, 0xa5, 0x31, 0x97, 0x0b, 0x98, 0x8c, 0x39, 0xda, 0x3f, 0x88, 0x66, 0xc4, 0xf4, 0xf6, 0x60, 0x5b, 0x0c, 0x4d, 0x44, 0x4b, 0x98, 0xe2, 0xc9, 0x95, 0x10, 0x0d, 0xb5, 0xdc}, 
{ 0xe1, 0xf0, 0x50, 0x64, 0xb2, 0x45, 0xf0, 0x0b, 0xcd, 0xd3, 0x2f, 0xa1, 0xe8, 0xf5, 0x49, 0x8b, 0x64, 0x59, 0x3f, 0x96, 0x2e, 0x50, 0xf5, 0xe2, 0xd9, 0xdd, 0x50, 0xd2, 0xc0, 0x9f, 0xe1, 0xa7}, 
{ 0xfb, 0x62, 0x74, 0x69, 0xf3, 0xfe, 0x31, 0x7b, 0x47, 0xdb, 0xb5, 0xec, 0x65, 0x2d, 0x1e, 0x7f, 0x93, 0x1c, 0xcd, 0x8d, 0x6b, 0xf4, 0x08, 0x03, 0x34, 0x07, 0xb6, 0xde, 0x5a, 0x8f, 0x3d, 0x5f}, 
{ 0x2a, 0xcb, 0xe9, 0x0f, 0x08, 0xf1, 0xb8, 0x70, 0x8d, 0x1c, 0x2d, 0xc8, 0xbe, 0xd7, 0x28, 0x88, 0x54, 0x63, 0x6b, 0xc2, 0xc9, 0xd1, 0xca, 0x6f, 0x44, 0x93, 0x06, 0x11, 0x20, 0x92, 0x63, 0x8b}, 
{ 0x76, 0xb6, 0x33, 0x7d, 0x58, 0x7e, 0x2b, 0xd4, 0x97, 0x1e, 0x22, 0x33, 0xb3, 0x70, 0x6d, 0xe1, 0x80, 0x2e, 0x5f, 0x11, 0xf1, 0xfe, 0x9d, 0x22, 0x5a, 0x8f, 0x38, 0xd7, 0xc8, 0x39, 0x69, 0xd3}, 
{ 0x8a, 0x15, 0x31, 0x5b, 0x0c, 0xac, 0xf3, 0x96, 0x75, 0x3f, 0x34, 0xe2, 0x25, 0x90, 0x78, 0xf7, 0xfd, 0xd1, 0x88, 0x6e, 0xbd, 0x1f, 0x51, 0xef, 0xa0, 0x6d, 0x4d, 0xab, 0x9d, 0x9a, 0xc3, 0x4c}, 
{ 0x28, 0x1a, 0x9b, 0xae, 0x8b, 0xe8, 0xcc, 0xe4, 0x2a, 0x63, 0xaa, 0x2c, 0xc7, 0xd1, 0x11, 0x17, 0xd4, 0xca, 0xd8, 0xdd, 0x05, 0x43, 0x24, 0x63, 0x7d, 0xf3, 0x9c, 0x75, 0x45, 0x0e, 0xd8, 0x22}, 
{ 0xac, 0xa6, 0x80, 0x55, 0x0f, 0xb6, 0xb4, 0xce, 0x9c, 0x9c, 0x7e, 0x08, 0x73, 0xcc, 0xa2, 0x08, 0xb3, 0x0f, 0x06, 0x77, 0x67, 0x0e, 0x4a, 0xd6, 0x07, 0x74, 0xdf, 0xbf, 0xc3, 0x57, 0x8f, 0x86}, 
{ 0x12, 0x49, 0x47, 0x8f, 0xab, 0x46, 0xc9, 0x14, 0x6a, 0xa0, 0xf3, 0xe2, 0x6f, 0x2d, 0xa5, 0xad, 0x08, 0x82, 0xd0, 0x6e, 0x46, 0xd5, 0xbb, 0xf4, 0x6e, 0x9b, 0xee, 0x90, 0x09, 0xdf, 0x37, 0xd6}, 
{ 0x44, 0x6b, 0x8c, 0x44, 0xad, 0x5e, 0x8e, 0x51, 0xe9, 0x60, 0xe5, 0x18, 0x0d, 0x85, 0x11, 0xd1, 0x42, 0x01, 0x58, 0x6e, 0xf3, 0x3c, 0x22, 0x20, 0xb9, 0xa6, 0x54, 0xc4, 0xf5, 0x8a, 0xaa, 0x17}, 
{ 0xbd, 0xdb, 0xb7, 0x2e, 0x16, 0xf0, 0xc0, 0xad, 0x44, 0xef, 0x2e, 0xe6, 0x20, 0x3f, 0x32, 0x4f, 0xef, 0x67, 0x84, 0xec, 0x9a, 0x47, 0x70, 0x91, 0x30, 0x29, 0x7f, 0x64, 0x01, 0x72, 0xd3, 0x18}, 
{ 0x58, 0xbf, 0x85, 0xf5, 0xbb, 0xb9, 0xc4, 0x32, 0x67, 0xc4, 0x40, 0xe8, 0xbc, 0x64, 0xc4, 0x8c, 0x17, 0xa4, 0xfd, 0xca, 0x60, 0x44, 0x3b, 0xa0, 0x7d, 0x74, 0x8d, 0xfb, 0x29, 0x57, 0xf9, 0xbb}, 
{ 0x18, 0xfd, 0x7e, 0x35, 0x5d, 0x8e, 0x73, 0x41, 0xcb, 0x20, 0x4f, 0x17, 0x70, 0xa2, 0xb9, 0xfc, 0x95, 0x66, 0xf8, 0x1c, 0x81, 0xfc, 0xad, 0xbb, 0x1c, 0xaa, 0x15, 0xaf, 0xe0, 0xa9, 0x1c, 0xc1}, 
{ 0xc6, 0x81, 0x5e, 0x87, 0x0b, 0x13, 0xbd, 0x80, 0x13, 0x2e, 0xbc, 0x7f, 0x79, 0x9f, 0x1e, 0x09, 0x8c, 0x50, 0x92, 0x38, 0xfc, 0xff, 0x2f, 0x83, 0x42, 0xc7, 0x2d, 0xb7, 0x62, 0x36, 0x98, 0xfc}, 
{ 0x3b, 0x81, 0xee, 0x49, 0x0e, 0x49, 0xaf, 0xcc, 0x76, 0x24, 0x43, 0xe6, 0x0b, 0xa0, 0xa6, 0xec, 0x45, 0xaf, 0x81, 0xae, 0x10, 0x97, 0xce, 0x4b, 0xbe, 0x07, 0x2d, 0xb0, 0xfd, 0x18, 0x82, 0x06}, 
{ 0x8a, 0x09, 0x2a, 0x5d, 0x4c, 0xd7, 0xb6, 0xb7, 0x84, 0x2e, 0x45, 0x25, 0x7b, 0xd9, 0x32, 0x4d, 0x0e, 0x8a, 0xd1, 0x15, 0x8c, 0x4d, 0xdc, 0x8f, 0x77, 0xb5, 0x74, 0x3e, 0x24, 0x83, 0xa1, 0x47}, 
{ 0xeb, 0x8c, 0x07, 0xd2, 0x88, 0x3a, 0xd1, 0x7d, 0x1a, 0x82, 0x2e, 0xc9, 0xfe, 0xb6, 0x84, 0x48, 0x18, 0xbc, 0x44, 0xe5, 0x99, 0x8c, 0x74, 0x49, 0x00, 0xd8, 0x4f, 0x84, 0x84, 0x1f, 0xc3, 0x80}, 
{ 0x94, 0x26, 0x75, 0x94, 0x62, 0x4a, 0x02, 0xa3, 0xcb, 0x59, 0xe4, 0xe4, 0x33, 0xbd, 0xe2, 0x9e, 0xea, 0x68, 0xa9, 0xec, 0x6d, 0xe2, 0x6e, 0xa1, 0xcb, 0x6c, 0xec, 0xbe, 0x86, 0x16, 0x96, 0x16}, 
{ 0x89, 0x6b, 0x82, 0x1d, 0x86, 0x9b, 0x79, 0xa3, 0x43, 0x7f, 0x6f, 0xe6, 0x69, 0x45, 0x16, 0x3b, 0x95, 0xef, 0x17, 0xd7, 0x90, 0x9f, 0xce, 0x82, 0xa2, 0xdc, 0x23, 0x94, 0x73, 0x64, 0x82, 0xb4}, 
{ 0x2f, 0x4e, 0x19, 0xc9, 0xd4, 0x9e, 0xa2, 0x19, 0x02, 0x0f, 0x11, 0x93, 0x77, 0x51, 0x41, 0x11, 0x9b, 0xb5, 0xf9, 0x20, 0xe1, 0xa8, 0xb6, 0x34, 0x31, 0x30, 0x91, 0xee, 0x36, 0x57, 0x83, 0x49}, 
{ 0xda, 0x47, 0x11, 0x91, 0x55, 0x7e, 0x63, 0xaa, 0x4a, 0xca, 0x36, 0x4f, 0x2f, 0xee, 0x77, 0xc0, 0x8a, 0x1b, 0xa4, 0x9e, 0xd9, 0x75, 0xa8, 0xb7, 0x46, 0xb3, 0x05, 0xb1, 0x99, 0x23, 0x3b, 0x13}, 
{ 0xae, 0x1c, 0x90, 0x39, 0xf3, 0xf8, 0x94, 0xc5, 0xeb, 0x1c, 0x19, 0x08, 0x82, 0x11, 0x11, 0xaa, 0xec, 0x2c, 0xf2, 0x31, 0x02, 0x1f, 0x32, 0x91, 0xf5, 0xea, 0x67, 0x1c, 0x9e, 0x1c, 0x93, 0xd6}, 
{ 0x1e, 0x78, 0xf6, 0x01, 0x35, 0xea, 0x2c, 0xa2, 0x47, 0x38, 0x8d, 0x9c, 0x75, 0xfb, 0x24, 0x76, 0x39, 0x33, 0x46, 0x47, 0xd4, 0xf0, 0xee, 0x09, 0x81, 0x7f, 0xb5, 0x4d, 0x40, 0x64, 0x64, 0x17}, 
{ 0x15, 0x7a, 0x64, 0xdb, 0x3b, 0xc9, 0xef, 0xa2, 0x72, 0x62, 0xc5, 0x51, 0x4a, 0xcc, 0x99, 0x49, 0xd7, 0x62, 0x9b, 0x1c, 0xf9, 0x00, 0x19, 0x09, 0xf1, 0x95, 0x7d, 0x26, 0xe8, 0x35, 0x90, 0x71}, 
{ 0xb5, 0xd0, 0x08, 0x69, 0x1e, 0x14, 0x9e, 0x00, 0x4b, 0x97, 0x02, 0x93, 0xec, 0xb8, 0x2a, 0x51, 0x6c, 0xd1, 0xf2, 0x4d, 0x53, 0x50, 0x8a, 0xe9, 0xc7, 0x5f, 0x6d, 0x92, 0x4f, 0x57, 0x0b, 0x6a}, 
{ 0xe8, 0x80, 0x2f, 0xc4, 0x7a, 0x50, 0x46, 0x44, 0x29, 0x78, 0xc0, 0x80, 0xcc, 0x48, 0x2d, 0x2b, 0x32, 0x73, 0x6f, 0x11, 0x48, 0xa9, 0xdd, 0x71, 0x8e, 0xe7, 0x9d, 0xb9, 0x18, 0x18, 0x15, 0x31}, 
{ 0x92, 0x29, 0xc0, 0xf4, 0xc9, 0x29, 0x46, 0xa3, 0x86, 0xe3, 0x0a, 0x83, 0x4b, 0x90, 0xfb, 0xa1, 0x0d, 0xe2, 0xdc, 0xce, 0x62, 0x14, 0x54, 0x9c, 0x0a, 0x86, 0xf1, 0x5c, 0x86, 0xcc, 0x2b, 0x3e}, 
{ 0x6a, 0xe9, 0x48, 0x3c, 0xd1, 0xc0, 0xf7, 0xe2, 0x25, 0x58, 0xa5, 0x29, 0x72, 0xfe, 0xd1, 0xd4, 0xcc, 0xe8, 0x61, 0x1c, 0xcd, 0xfe, 0x7e, 0xc2, 0xab, 0x54, 0xc2, 0xd8, 0xa7, 0x9f, 0xf8, 0xeb}, 
{ 0x82, 0x55, 0x5c, 0xeb, 0x84, 0x26, 0xe3, 0x5b, 0x53, 0xe5, 0x5d, 0x2d, 0xb6, 0x39, 0x38, 0x93, 0xa1, 0xb6, 0x81, 0x1a, 0x60, 0xc9, 0x47, 0xd4, 0xa6, 0x4e, 0xe4, 0xfc, 0x01, 0x6f, 0xba, 0x8e}, 
{ 0x09, 0x18, 0x9d, 0x43, 0x7f, 0x46, 0xc3, 0x34, 0x40, 0xcc, 0x3f, 0x65, 0xd5, 0xb6, 0x6d, 0x1e, 0x1d, 0xe1, 0xc9, 0xae, 0x8d, 0x5a, 0x43, 0x6e, 0x31, 0x81, 0x4c, 0xcf, 0x6d, 0x10, 0x17, 0x97}, 
{ 0xb0, 0x72, 0x24, 0x79, 0xd4, 0x76, 0x3f, 0x74, 0x6b, 0x39, 0x74, 0x5e, 0x3b, 0xac, 0xb3, 0x28, 0xb8, 0x3a, 0x0f, 0xdb, 0x3a, 0x98, 0xe5, 0x51, 0x6a, 0x31, 0x0d, 0x38, 0x23, 0xec, 0x96, 0xae}, 
{ 0x98, 0xa0, 0xd9, 0x78, 0x5f, 0xe1, 0xc2, 0x93, 0x21, 0x80, 0xed, 0x8c, 0x16, 0x70, 0x17, 0x1e, 0x61, 0x13, 0x60, 0x78, 0x31, 0x31, 0x97, 0x64, 0xcd, 0xcd, 0xf6, 0x33, 0x48, 0x68, 0x53, 0x02}, 
{ 0x3a, 0xa5, 0x8b, 0x08, 0x68, 0x9d, 0xd8, 0xa4, 0x75, 0xbe, 0xd7, 0x59, 0x8d, 0x9a, 0x8f, 0x9f, 0x53, 0xcc, 0x7a, 0x5c, 0x62, 0xd3, 0x8f, 0x04, 0xb5, 0x5e, 0x80, 0xde, 0x05, 0xa0, 0x56, 0x7c}, 
{ 0x36, 0xd4, 0x9d, 0x69, 0x66, 0xf1, 0xd7, 0x0c, 0x41, 0x4e, 0x59, 0x73, 0x7e, 0x61, 0x53, 0xed, 0x23, 0x67, 0xf9, 0x32, 0x9f, 0xb8, 0x41, 0x3a, 0x8b, 0x54, 0x1f, 0x99, 0xd5, 0xee, 0xdc, 0xc5}, 
{ 0x6a, 0xe0, 0x4e, 0xd3, 0x7c, 0x52, 0xf7, 0x1b, 0xf7, 0x37, 0x10, 0xe0, 0xff, 0x39, 0x46, 0xec, 0x59, 0xbf, 0x6f, 0xdd, 0xe0, 0x71, 0x59, 0x21, 0xd5, 0x3d, 0xa4, 0x4b, 0xb9, 0x22, 0x0b, 0x59}, 
{ 0xfc, 0x4b, 0xd8, 0x47, 0x85, 0xdc, 0x43, 0x93, 0xee, 0x87, 0xe9, 0x36, 0x87, 0x10, 0x7b, 0xa1, 0xc3, 0xd9, 0xdf, 0x90, 0xa3, 0x6b, 0xf1, 0xe1, 0x4a, 0x05, 0x07, 0x3f, 0xa1, 0xfa, 0xf0, 0xb9}, 
{ 0x8b, 0x16, 0xc2, 0x88, 0x82, 0x69, 0x2b, 0x66, 0xee, 0x8b, 0x61, 0xb7, 0x8f, 0x6c, 0xaa, 0xe8, 0x66, 0x00, 0x84, 0x7f, 0x18, 0x38, 0xc7, 0x6c, 0x9f, 0xef, 0x73, 0x23, 0x79, 0xde, 0x41, 0x4a}, 
{ 0xe5, 0xc0, 0x7e, 0x64, 0xfb, 0xb1, 0x78, 0x64, 0xff, 0x2a, 0xa6, 0xe6, 0xf8, 0x36, 0x38, 0x63, 0x4a, 0x09, 0x5a, 0x74, 0xd0, 0x26, 0xb9, 0xf9, 0x63, 0x7b, 0x94, 0xce, 0x46, 0xe0, 0x32, 0x18}, 
{ 0x3b, 0xf7, 0x98, 0x45, 0x76, 0x8e, 0x1d, 0x1b, 0xb7, 0x11, 0x1c, 0x04, 0xa6, 0x5a, 0x04, 0x52, 0x14, 0x9f, 0x38, 0xa7, 0x98, 0x6c, 0x4e, 0xb4, 0x28, 0xc4, 0xa3, 0x81, 0x12, 0x51, 0xa0, 0x67}, 
{ 0x60, 0x83, 0x83, 0x4c, 0xd9, 0xc1, 0xff, 0x0e, 0x68, 0xbb, 0x69, 0x0a, 0x5b, 0x08, 0xf3, 0xde, 0xe7, 0x5f, 0x63, 0xf3, 0x69, 0x8c, 0x47, 0x96, 0x47, 0x99, 0xf4, 0x45, 0x1a, 0x1f, 0xa7, 0x20}, 
{ 0x1d, 0xc7, 0xa7, 0xd4, 0x9c, 0xb8, 0xca, 0xa4, 0xd5, 0xe4, 0xda, 0x44, 0xb4, 0x51, 0xff, 0x4f, 0xf3, 0x90, 0x9b, 0xd9, 0xaa, 0x99, 0xc3, 0xa0, 0xe4, 0xea, 0xe1, 0x44, 0x60, 0x20, 0xc0, 0x76}, 
{ 0x87, 0xf4, 0x55, 0xd7, 0x4f, 0x90, 0x17, 0x59, 0x37, 0xa3, 0x2e, 0xda, 0x61, 0xb5, 0x24, 0x16, 0xe9, 0xe5, 0xc1, 0x18, 0x83, 0xbe, 0x37, 0x5e, 0x82, 0x1b, 0x56, 0x65, 0xdf, 0x44, 0x88, 0x35}, 
{ 0x04, 0xb2, 0x61, 0x70, 0x91, 0x7e, 0xcc, 0xb0, 0xa5, 0x7a, 0xa3, 0x9e, 0xf6, 0x45, 0x20, 0x3f, 0xe4, 0xed, 0x12, 0x1e, 0x63, 0x65, 0x64, 0x69, 0x8f, 0x41, 0xaa, 0x24, 0x2e, 0xc6, 0xdf, 0xf0}, 
{ 0x5d, 0x65, 0x48, 0x97, 0x5b, 0xb8, 0x82, 0x05, 0x14, 0xc6, 0x46, 0x23, 0xb2, 0xd9, 0x1a, 0x4a, 0x19, 0xa6, 0x49, 0xc2, 0x29, 0x35, 0x20, 0xab, 0xf0, 0xdd, 0xde, 0x3a, 0xa4, 0xca, 0x36, 0xcb}, 
{ 0x08, 0xf4, 0x9b, 0x31, 0x50, 0x7f, 0x97, 0x15, 0xbf, 0xae, 0x82, 0x44, 0x78, 0x46, 0x9b, 0xdc, 0x51, 0xcc, 0xe1, 0x2a, 0x68, 0x20, 0x7a, 0x11, 0x12, 0xfe, 0xe1, 0x1c, 0x1f, 0x95, 0xd5, 0x02}, 
{ 0x82, 0xef, 0x42, 0x38, 0x90, 0xfe, 0xfc, 0xb6, 0xf0, 0xab, 0x1a, 0xf5, 0xb1, 0xa1, 0x2f, 0xb7, 0x2f, 0x6d, 0xbb, 0x99, 0x02, 0x9b, 0x5a, 0xa1, 0x0a, 0x21, 0x44, 0xae, 0xe2, 0xda, 0x74, 0x30}, 
{ 0xf5, 0x71, 0xd3, 0x79, 0xb6, 0x7e, 0xb6, 0x4f, 0x01, 0x3e, 0x2c, 0x9c, 0xd5, 0x1e, 0x36, 0x65, 0xeb, 0x9f, 0xa5, 0x6b, 0xe4, 0xc3, 0xac, 0x2b, 0x57, 0x73, 0x8c, 0xd0, 0x09, 0xc1, 0x28, 0x5d}, 
{ 0x67, 0xa9, 0x32, 0x27, 0xde, 0xf0, 0x41, 0x19, 0x51, 0x6a, 0x8a, 0x41, 0x23, 0xbf, 0x02, 0x18, 0x96, 0x8b, 0xdb, 0x1e, 0xbd, 0xb0, 0x30, 0x5a, 0xd1, 0xe8, 0x0e, 0x99, 0x0d, 0x5d, 0xf4, 0x59}, 
{ 0xc4, 0xbe, 0xe6, 0x77, 0x58, 0xf0, 0x8a, 0x7a, 0x8c, 0x5a, 0x46, 0x02, 0x2c, 0x34, 0xd6, 0xcc, 0x02, 0xa5, 0xdb, 0x26, 0x15, 0x06, 0x6c, 0x86, 0x74, 0x26, 0x2b, 0x8f, 0x0a, 0xda, 0xa5, 0x4e}, 
{ 0x7f, 0x0d, 0xdb, 0xdc, 0x66, 0x80, 0x5a, 0x23, 0x38, 0xd9, 0x22, 0x37, 0x12, 0xdc, 0x85, 0x71, 0xbe, 0xe0, 0x75, 0x4c, 0x13, 0xbc, 0x47, 0xff, 0x68, 0x7e, 0x06, 0x0c, 0xd7, 0xe3, 0xd7, 0x36}, 
{ 0x71, 0xef, 0xde, 0x46, 0x04, 0x68, 0x29, 0xc1, 0xcd, 0xc8, 0x17, 0xb2, 0xe1, 0x32, 0x86, 0x6e, 0xcb, 0x0c, 0x2a, 0xe3, 0x3f, 0x54, 0x1f, 0x81, 0x8f, 0x06, 0x8b, 0x9d, 0xcd, 0x87, 0xae, 0xb9}, 
{ 0xd5, 0x59, 0x16, 0xe4, 0x3f, 0x0f, 0x8d, 0xad, 0x2e, 0x71, 0xf9, 0x07, 0xc2, 0x61, 0x2a, 0xb8, 0x01, 0x9b, 0x40, 0xab, 0xf6, 0xff, 0xb6, 0x2a, 0x93, 0x13, 0x70, 0x35, 0x58, 0xaf, 0x2c, 0x98}, 
{ 0x95, 0xaf, 0xbd, 0x11, 0x55, 0xc1, 0xda, 0x54, 0xba, 0x22, 0x0b, 0x99, 0xdf, 0x9f, 0x9a, 0x14, 0x67, 0x38, 0x91, 0xd7, 0x91, 0xca, 0xa4, 0x86, 0xe1, 0x8b, 0xd5, 0x46, 0xb5, 0x82, 0x45, 0x17}, 
{ 0xe8, 0xa6, 0xd8, 0x2c, 0x51, 0x73, 0x88, 0xc2, 0x2e, 0xee, 0x75, 0x0f, 0x40, 0x53, 0x01, 0x7c, 0xc3, 0xc7, 0xd1, 0x89, 0x8a, 0x53, 0xf2, 0x0d, 0x8e, 0x44, 0x50, 0xeb, 0x33, 0x4a, 0xcd, 0xcb}, 
{ 0x86, 0x78, 0x97, 0x62, 0x2c, 0x27, 0x97, 0x91, 0x55, 0x53, 0x4f, 0x24, 0x54, 0x6a, 0x77, 0xe4, 0xae, 0xcd, 0x90, 0x0d, 0x99, 0x5f, 0x5a, 0xc8, 0x15, 0x28, 0x79, 0xe9, 0x35, 0x81, 0x16, 0x66}, 
{ 0x2c, 0xd7, 0x75, 0xeb, 0xbc, 0x39, 0xa1, 0x43, 0x5e, 0xbd, 0x90, 0x95, 0x51, 0xcd, 0x94, 0x76, 0x1f, 0xe1, 0xc1, 0xca, 0xb0, 0x0e, 0x50, 0x1d, 0xbd, 0x0e, 0x28, 0xc6, 0x22, 0xe2, 0xd8, 0x58}, 
{ 0x05, 0x7d, 0xf2, 0x05, 0x40, 0x4f, 0xe7, 0x36, 0x96, 0x30, 0x6d, 0xe1, 0x57, 0xa7, 0xb6, 0x51, 0x23, 0x18, 0x7c, 0x43, 0xd8, 0x01, 0x2d, 0x58, 0x3c, 0xaf, 0x2a, 0x97, 0x83, 0x2d, 0x7c, 0x67}, 
{ 0x02, 0x17, 0x05, 0x97, 0xf1, 0x89, 0x5e, 0x0b, 0xce, 0xdb, 0x88, 0xfd, 0x15, 0xe0, 0x5c, 0x87, 0x30, 0xee, 0xf6, 0xc1, 0x6d, 0x86, 0x7d, 0x51, 0x40, 0xb2, 0xc6, 0x34, 0x71, 0x0f, 0xe5, 0xf7}, 
{ 0xc1, 0xfa, 0x29, 0x78, 0xd8, 0x83, 0xe7, 0x2b, 0x2b, 0xf7, 0x83, 0xf5, 0x87, 0x10, 0xf8, 0xe9, 0x55, 0xad, 0x01, 0x31, 0x8c, 0x5c, 0x2f, 0x52, 0x96, 0x51, 0x89, 0x6d, 0xfc, 0x4d, 0x7f, 0x55}, 
{ 0xe5, 0x8d, 0x08, 0xee, 0x72, 0x01, 0x1d, 0x4a, 0x43, 0x9c, 0x72, 0xaf, 0x74, 0xd8, 0xe3, 0xd8, 0x69, 0x91, 0x12, 0x1f, 0x0e, 0x33, 0x5c, 0xaf, 0xd8, 0xde, 0x09, 0xf6, 0xd1, 0x69, 0xee, 0x57}, 
{ 0xb9, 0xc2, 0x74, 0xf8, 0x5e, 0x0e, 0xe4, 0x6a, 0x07, 0x80, 0x90, 0x1f, 0xb5, 0x0e, 0x9c, 0xaf, 0xbd, 0x67, 0x22, 0x6b, 0xf8, 0xc6, 0xd8, 0x65, 0xf9, 0x20, 0x7c, 0xf2, 0x25, 0x53, 0x61, 0x0b}, 
{ 0xd2, 0x5d, 0xe6, 0x99, 0xc3, 0x87, 0xe6, 0x4d, 0xcd, 0x7c, 0x2e, 0xca, 0xbd, 0x67, 0x5d, 0xe5, 0x08, 0x8c, 0xf6, 0x17, 0x0c, 0x0e, 0x25, 0x41, 0x39, 0x00, 0xf8, 0x65, 0xcf, 0x89, 0x44, 0x28}, 
{ 0xc9, 0xe1, 0x35, 0xad, 0x44, 0x29, 0xd3, 0x2c, 0xb8, 0x51, 0x7f, 0xf4, 0x9f, 0x2d, 0xee, 0x13, 0xdc, 0x01, 0x4a, 0xaf, 0xa8, 0xe4, 0xcd, 0x80, 0x1c, 0x28, 0xb9, 0x86, 0xb3, 0xf9, 0x03, 0xd9}, 
{ 0xa2, 0xa2, 0x28, 0x06, 0x71, 0x9b, 0x0e, 0x1f, 0xd5, 0xc7, 0x9b, 0x7b, 0xf3, 0x07, 0x3d, 0xfe, 0xb1, 0x0b, 0x6f, 0xe4, 0x68, 0xc2, 0x98, 0x98, 0x60, 0xe6, 0x43, 0xa7, 0x33, 0x0d, 0x08, 0x75}, 
{ 0x29, 0x36, 0x7e, 0xfc, 0x31, 0xac, 0x0d, 0xe1, 0x3f, 0x27, 0xb7, 0x15, 0x63, 0x37, 0xc2, 0x16, 0xa0, 0x2d, 0x6f, 0xeb, 0xd9, 0xf2, 0xcf, 0x00, 0x12, 0xe0, 0x8a, 0x5d, 0x06, 0x91, 0x82, 0x11}, 
{ 0xe0, 0x84, 0x87, 0x00, 0xbd, 0xba, 0x07, 0x3b, 0x70, 0x5d, 0x57, 0xfa, 0x7a, 0x7f, 0xaf, 0xf2, 0x00, 0x8d, 0xd5, 0x18, 0x4b, 0x8a, 0x16, 0xce, 0x52, 0xfe, 0xf3, 0x97, 0xac, 0x54, 0x0e, 0xef}, 
{ 0x28, 0xc3, 0xa5, 0x2b, 0x77, 0x8d, 0x13, 0x14, 0x70, 0x29, 0xe6, 0xe0, 0xcb, 0x17, 0xf4, 0x10, 0xc9, 0x52, 0xb5, 0x24, 0x50, 0xf2, 0x89, 0xfd, 0xdb, 0xa0, 0xeb, 0x4a, 0x6c, 0x9f, 0x82, 0x3d}, 
{ 0x01, 0x63, 0x89, 0x59, 0x11, 0x10, 0x87, 0x09, 0x95, 0xf2, 0xeb, 0xe7, 0xa0, 0xae, 0x3e, 0x39, 0x1a, 0x04, 0xb8, 0x0b, 0x08, 0xdf, 0xfb, 0x9e, 0xda, 0x2b, 0xa2, 0x26, 0x42, 0x0f, 0x46, 0x3a}, 
{ 0x9e, 0x0b, 0x62, 0x62, 0x46, 0x32, 0x70, 0xe7, 0xfa, 0x8a, 0x42, 0x50, 0x5e, 0x1a, 0xca, 0x76, 0x8c, 0x3a, 0x63, 0xc3, 0x5a, 0x3a, 0x74, 0xc5, 0xee, 0xdc, 0xa7, 0xe0, 0xc9, 0x51, 0xd0, 0x3a}, 
{ 0x91, 0xf6, 0xa4, 0xe2, 0x58, 0xbd, 0x09, 0x08, 0x4d, 0xfa, 0x15, 0xcb, 0xf9, 0x74, 0x02, 0x8b, 0x8b, 0xcb, 0x03, 0x24, 0xdb, 0x70, 0x9e, 0x0e, 0xbe, 0x5f, 0x2c, 0x0b, 0xbc, 0x62, 0x20, 0x02}, 
{ 0x7b, 0x1b, 0x06, 0x6d, 0x9f, 0xd3, 0x8d, 0xa6, 0xb7, 0x76, 0xf9, 0x14, 0x60, 0x8a, 0x47, 0x7b, 0x81, 0xa6, 0xd5, 0x86, 0xb7, 0x1f, 0x7d, 0xc4, 0x39, 0xc2, 0x32, 0x2b, 0x62, 0x5c, 0xf8, 0x9c}, 
{ 0x1c, 0xb5, 0x76, 0x20, 0x67, 0x8f, 0x4d, 0xfb, 0x39, 0xdc, 0x8d, 0xb7, 0xed, 0x59, 0xa6, 0xd1, 0x93, 0x2f, 0xed, 0xa5, 0xcd, 0x02, 0xec, 0x7c, 0x68, 0x3d, 0x88, 0x7e, 0xdf, 0x2a, 0xd1, 0x9f}, 
{ 0xcc, 0xee, 0x82, 0x41, 0xa5, 0x70, 0xc9, 0x68, 0x04, 0xbe, 0xa6, 0xc1, 0x45, 0xae, 0x0e, 0xe5, 0x13, 0x08, 0xd7, 0xf7, 0xf1, 0x9f, 0xd0, 0x4b, 0xcf, 0xc3, 0x83, 0x4a, 0xe9, 0x99, 0x02, 0xe6}, 
{ 0x28, 0x2b, 0x3d, 0x50, 0x7f, 0x20, 0x24, 0xbe, 0xf2, 0xd1, 0x59, 0x1c, 0xeb, 0x39, 0x1e, 0xd9, 0xa6, 0x2c, 0x35, 0xeb, 0x08, 0xae, 0x56, 0xe3, 0x52, 0x94, 0xc4, 0x88, 0xcb, 0x3b, 0x0b, 0xca}, 
{ 0xc3, 0x37, 0x36, 0x90, 0xb6, 0x2a, 0x23, 0x1c, 0x4c, 0x73, 0xb3, 0xfc, 0x53, 0x8e, 0x06, 0xed, 0xe6, 0xd5, 0xb0, 0x6f, 0x5a, 0x65, 0x21, 0x1f, 0x23, 0xcd, 0xdb, 0xf8, 0x45, 0xa2, 0x81, 0x3f}, 
{ 0x95, 0x6f, 0xd5, 0x1a, 0x13, 0x0c, 0xf0, 0x0f, 0xa5, 0xd0, 0x5b, 0x8c, 0x0e, 0xbd, 0x2d, 0xb1, 0xc0, 0xcd, 0x5b, 0xb5, 0x47, 0x9e, 0x40, 0x32, 0x04, 0x11, 0x0e, 0x90, 0xd4, 0x54, 0x55, 0x0c}, 
{ 0x3b, 0xbb, 0x7d, 0x62, 0x21, 0x76, 0xd8, 0x76, 0x55, 0x64, 0x04, 0x51, 0x9b, 0x37, 0xc8, 0xee, 0xcf, 0x29, 0xd1, 0x8e, 0x4e, 0x66, 0x17, 0x1d, 0xb4, 0xd7, 0x44, 0x9f, 0x88, 0xcd, 0xc5, 0xfe}, 
{ 0x08, 0x06, 0xd5, 0x68, 0x0d, 0xab, 0x22, 0xce, 0xc3, 0xc9, 0x61, 0xbb, 0x7c, 0x6c, 0x07, 0x08, 0x8c, 0xaa, 0x79, 0x98, 0xc0, 0x81, 0xdd, 0xa0, 0x54, 0x5e, 0xf7, 0x49, 0xcb, 0xfe, 0x19, 0xad}, 
{ 0x15, 0x50, 0x5d, 0xb6, 0x3e, 0xb6, 0xba, 0x38, 0x60, 0x14, 0x11, 0x08, 0x59, 0x76, 0x30, 0x2c, 0xd9, 0xff, 0x77, 0x24, 0x62, 0x53, 0xe4, 0x6a, 0x46, 0xed, 0xfe, 0x10, 0x7b, 0xe6, 0x3e, 0xda}, 
{ 0x91, 0x79, 0xbc, 0x13, 0x73, 0x85, 0x85, 0x9d, 0xec, 0x36, 0xab, 0xc9, 0x0c, 0x9d, 0x8c, 0x40, 0x77, 0xfd, 0x8e, 0x0d, 0x27, 0xc9, 0x42, 0xd5, 0x55, 0xe8, 0x79, 0xd7, 0xc0, 0x02, 0x18, 0x0c}, 
{ 0x99, 0x44, 0x13, 0xb8, 0x97, 0x36, 0xc6, 0x93, 0x4a, 0xf0, 0x4e, 0x8d, 0xa8, 0x5a, 0x09, 0xe6, 0x2c, 0xd6, 0x38, 0x56, 0x5f, 0x22, 0x2b, 0x5c, 0x60, 0x96, 0x74, 0xee, 0xb2, 0xa1, 0xe5, 0x04}, 
{ 0xc4, 0xf5, 0x9f, 0x47, 0x51, 0xf3, 0xe4, 0xc8, 0x32, 0x06, 0xe5, 0xa2, 0x5d, 0xa6, 0xb7, 0x30, 0xd6, 0x11, 0x31, 0xb5, 0x4f, 0x09, 0xe7, 0x1e, 0x42, 0xbc, 0xb9, 0x7e, 0x73, 0xa0, 0x47, 0x13}, 
{ 0xcf, 0xa1, 0xc4, 0xdf, 0xe5, 0xa1, 0xbb, 0x4c, 0xe0, 0x58, 0xf1, 0xc9, 0x5f, 0xb5, 0x55, 0x1f, 0xc2, 0x53, 0x17, 0x4e, 0xf5, 0x84, 0x4e, 0xc2, 0xaa, 0x10, 0xab, 0xaf, 0x62, 0xac, 0xd2, 0x3c}, 
{ 0x6a, 0x52, 0x54, 0x2e, 0x7c, 0xec, 0x05, 0x02, 0x6b, 0xfc, 0xaf, 0x3d, 0x7e, 0x2b, 0xe9, 0xc5, 0xb4, 0x2a, 0x28, 0x42, 0x34, 0x5f, 0x5f, 0xc2, 0xfd, 0xdd, 0x03, 0xb2, 0x8a, 0xb8, 0x38, 0x08}, 
{ 0xee, 0x6d, 0xff, 0xb6, 0x1a, 0x72, 0x55, 0xa2, 0x14, 0x1a, 0x0d, 0x74, 0xbe, 0x00, 0xaf, 0x09, 0xa8, 0x2a, 0xcf, 0x83, 0x64, 0x55, 0xf3, 0x95, 0x92, 0xec, 0x9f, 0xcb, 0xc1, 0x1d, 0x18, 0x6f}, 
{ 0x98, 0xd8, 0x5a, 0x17, 0xa1, 0xe8, 0x2e, 0xa9, 0xeb, 0xa0, 0xe4, 0xee, 0xc5, 0xf8, 0x9a, 0xa0, 0x0d, 0x75, 0x99, 0x0f, 0xb8, 0xf5, 0xdd, 0x63, 0x6e, 0xa0, 0xff, 0xd5, 0xc7, 0x84, 0x26, 0x8c}, 
{ 0xd7, 0xfd, 0x19, 0x13, 0xa9, 0xf3, 0xd5, 0xc8, 0xd5, 0x6f, 0x94, 0x1b, 0xc5, 0x95, 0xc4, 0x6b, 0xb9, 0x79, 0xcf, 0x0e, 0xbf, 0x20, 0xa8, 0x14, 0x5c, 0xb6, 0xcc, 0xb6, 0x69, 0x0f, 0xf8, 0x70}, 
{ 0x32, 0x27, 0x74, 0x2d, 0x4e, 0xcb, 0x16, 0xa5, 0x2a, 0xfc, 0x1e, 0x38, 0xa8, 0xde, 0x4e, 0x8a, 0x27, 0x5a, 0x25, 0xe6, 0x16, 0x67, 0xfa, 0xd6, 0xa5, 0x3e, 0xcc, 0xa6, 0xae, 0xbe, 0x8c, 0xa8}, 
{ 0x89, 0xc7, 0xf6, 0xa5, 0x21, 0x6d, 0x29, 0x63, 0xf7, 0xf6, 0x28, 0xa7, 0x0c, 0x3c, 0x1e, 0xa2, 0x4e, 0x78, 0x41, 0x29, 0xed, 0x98, 0x47, 0x79, 0xf1, 0xf9, 0x76, 0x42, 0x8c, 0xe3, 0x50, 0x6f}, 
{ 0x18, 0x95, 0x70, 0x8f, 0xbe, 0xa6, 0xd4, 0xf8, 0x5d, 0xc5, 0xf1, 0xcb, 0xd5, 0x9b, 0xc0, 0x28, 0x80, 0x0f, 0xc7, 0x14, 0xcd, 0xa7, 0xeb, 0x1e, 0x4f, 0x7e, 0x36, 0xd8, 0x4c, 0x0c, 0xab, 0xc3}, 
{ 0x59, 0xb7, 0x96, 0xda, 0x1e, 0x66, 0xe3, 0x83, 0x8f, 0x2a, 0x71, 0x0c, 0xe6, 0x6d, 0xad, 0xb5, 0xe3, 0xd6, 0xde, 0x0f, 0xac, 0x99, 0xe8, 0x65, 0xd5, 0x0d, 0x13, 0xcd, 0xa7, 0xbf, 0x52, 0x10}, 
{ 0x07, 0x0c, 0x21, 0xbb, 0x7b, 0xcc, 0x63, 0xbb, 0x1e, 0x4d, 0x58, 0x24, 0x2d, 0xa7, 0x7e, 0x4d, 0x04, 0x16, 0xa7, 0x68, 0x37, 0x4d, 0x56, 0x5b, 0x8b, 0x41, 0x24, 0xe0, 0x2a, 0x08, 0x24, 0xe0}, 
{ 0x8a, 0xf4, 0x47, 0xcb, 0xe5, 0xee, 0x83, 0xfc, 0x3e, 0x68, 0x30, 0x90, 0x3f, 0x5c, 0x21, 0x86, 0xe9, 0x3d, 0x2e, 0x9d, 0x59, 0xd4, 0x93, 0xc5, 0xb3, 0xb1, 0xc2, 0x79, 0xfd, 0x4f, 0x3c, 0x1a}, 
{ 0xee, 0x1e, 0x3a, 0x7f, 0x88, 0x3c, 0x49, 0xdc, 0x1d, 0xb9, 0xf6, 0x0d, 0x6b, 0xe4, 0xb5, 0x06, 0xa5, 0x56, 0x2f, 0xb8, 0x6c, 0xb2, 0x44, 0x85, 0xf3, 0x2a, 0x08, 0x7d, 0x95, 0x91, 0x59, 0xe9}, 
{ 0x54, 0x13, 0x46, 0xc7, 0x76, 0x32, 0xef, 0xad, 0xca, 0xfc, 0x10, 0x74, 0x10, 0xd5, 0xd8, 0xe3, 0xa3, 0xd4, 0x6a, 0x50, 0xbe, 0xc6, 0x14, 0x7c, 0x48, 0xbb, 0x2b, 0xc3, 0x6f, 0x19, 0xab, 0xca}, 
{ 0xcb, 0x36, 0x5d, 0x00, 0x4b, 0xd1, 0xc5, 0x25, 0x7b, 0x09, 0x8a, 0x7b, 0xb5, 0xf9, 0xa9, 0x3e, 0x41, 0xb6, 0x90, 0x47, 0xb7, 0x64, 0x66, 0xdd, 0x8d, 0xc5, 0xcf, 0xee, 0x5d, 0x66, 0x94, 0x8e}, 
{ 0xc3, 0xfd, 0x77, 0xaa, 0xa8, 0x34, 0xc8, 0xd7, 0x08, 0x17, 0x2c, 0x75, 0xe8, 0xfc, 0xd7, 0x23, 0xc9, 0x15, 0xb8, 0x30, 0x30, 0xbe, 0xe9, 0x51, 0xba, 0xdf, 0x32, 0x31, 0x8c, 0x21, 0x82, 0x04}, 
{ 0x41, 0x9a, 0x3c, 0xb9, 0x89, 0x5b, 0x4a, 0x54, 0x9e, 0xb6, 0x11, 0x2e, 0x0f, 0x05, 0x9c, 0xa5, 0xd1, 0x74, 0x59, 0x39, 0x3e, 0xf8, 0xdf, 0xd0, 0x4a, 0x37, 0x59, 0x68, 0x6d, 0xdd, 0x1a, 0x8d}, 
{ 0x7b, 0x71, 0xca, 0xdd, 0x2b, 0xba, 0xf7, 0xed, 0x61, 0x60, 0xf6, 0x21, 0xc8, 0x0c, 0xfb, 0x2f, 0x9d, 0x9f, 0xae, 0x40, 0xba, 0x13, 0x1e, 0x80, 0x7b, 0x63, 0xc2, 0xc4, 0xfe, 0xbe, 0x70, 0x60}, 
{ 0x9d, 0xf5, 0x9d, 0x18, 0xa9, 0xad, 0xdd, 0xdb, 0x9f, 0x53, 0x6f, 0x53, 0x08, 0xa1, 0x98, 0x7c, 0xe0, 0x43, 0xca, 0x27, 0x20, 0xa0, 0x62, 0x20, 0x38, 0x4f, 0xe4, 0x4e, 0x14, 0x4b, 0x1e, 0x15}, 
{ 0xb8, 0x12, 0x5e, 0x9e, 0x65, 0x82, 0x52, 0xfe, 0xb9, 0x0e, 0x9b, 0xcf, 0xae, 0x4d, 0xab, 0x17, 0x16, 0xf7, 0xb4, 0xc8, 0x70, 0x92, 0x13, 0x1c, 0x9f, 0xff, 0x63, 0x05, 0x6e, 0xd0, 0x65, 0x52}, 
{ 0x26, 0xbc, 0x79, 0x7f, 0xdb, 0x9e, 0xaf, 0x2e, 0x6e, 0xeb, 0x1e, 0x51, 0x34, 0x9b, 0xea, 0xee, 0xbc, 0x07, 0xad, 0xf7, 0x36, 0xa6, 0x52, 0x41, 0x8c, 0x25, 0xdd, 0x13, 0xa0, 0x76, 0xc9, 0xa5}, 
{ 0x7f, 0x93, 0x76, 0xba, 0xdf, 0x0a, 0x7d, 0x72, 0x2e, 0xa8, 0xac, 0x25, 0x1c, 0xbd, 0x02, 0x8e, 0x4f, 0xdb, 0xa2, 0xb7, 0xc1, 0x98, 0xef, 0xe9, 0x2f, 0x56, 0x69, 0xb3, 0xce, 0x11, 0xa3, 0xbb}, 
{ 0xa1, 0xae, 0xc9, 0xf3, 0xa4, 0xf9, 0x7c, 0x99, 0x62, 0xd4, 0x80, 0x1a, 0x63, 0x55, 0xdb, 0x10, 0xa4, 0x90, 0x90, 0xbc, 0xbd, 0x54, 0x00, 0x85, 0xc5, 0xe8, 0x6c, 0xef, 0xe0, 0xed, 0x6b, 0x8e}, 
{ 0xf2, 0xe7, 0xa5, 0x70, 0x16, 0xa2, 0x22, 0xf3, 0x89, 0x84, 0x58, 0x97, 0xfd, 0x3a, 0xcf, 0xe9, 0x6d, 0xe3, 0x18, 0xd4, 0xad, 0x68, 0x9e, 0x96, 0x96, 0x61, 0x3a, 0x86, 0xeb, 0x60, 0xf1, 0x5b}, 
{ 0x28, 0x8f, 0xf0, 0xe0, 0xf4, 0xbb, 0xea, 0x8c, 0xa6, 0xe8, 0x27, 0xf2, 0xcd, 0xe7, 0x0f, 0x2b, 0xab, 0xab, 0xa0, 0xd2, 0xbc, 0xec, 0x00, 0xa9, 0x90, 0xa6, 0xd7, 0x77, 0xd2, 0x96, 0x8f, 0xec}, 
{ 0x1d, 0xd7, 0x5e, 0x55, 0x9f, 0x41, 0xa0, 0xb3, 0xd0, 0x62, 0x0b, 0xca, 0x2c, 0x09, 0x62, 0x41, 0x3d, 0x7b, 0xe5, 0x12, 0x43, 0x78, 0xe6, 0x84, 0x6a, 0xbb, 0xae, 0xd1, 0xf5, 0xa7, 0xaf, 0xab}, 
{ 0xb4, 0x6c, 0xb4, 0x86, 0xc0, 0xd3, 0x39, 0xa5, 0x6d, 0x3f, 0x76, 0x34, 0x2a, 0x2e, 0x33, 0x09, 0x47, 0xef, 0xa8, 0x19, 0x85, 0xfb, 0x7a, 0x06, 0xe5, 0x74, 0x97, 0xcc, 0x44, 0xd3, 0x11, 0x9b}, 
{ 0xb1, 0x74, 0xd8, 0x9c, 0x53, 0x8f, 0xbf, 0xf0, 0xe9, 0x06, 0x5b, 0xf2, 0x3a, 0xd8, 0x31, 0xe2, 0x3b, 0x65, 0xc9, 0xe0, 0x51, 0x61, 0xdd, 0x4c, 0x5c, 0xb0, 0x58, 0x93, 0xf8, 0xac, 0x9c, 0xac}, 
{ 0x4f, 0x36, 0x6f, 0x39, 0x0f, 0xee, 0xbf, 0x69, 0x8d, 0xd3, 0x10, 0x95, 0x7e, 0x5e, 0x83, 0x01, 0x34, 0xe2, 0xd5, 0x4e, 0xae, 0x14, 0x6f, 0x85, 0x73, 0x7c, 0x6c, 0x09, 0x31, 0xc4, 0x60, 0x98}, 
{ 0xf2, 0x75, 0x93, 0x68, 0x73, 0x52, 0xab, 0x42, 0x3f, 0x6c, 0x31, 0x35, 0x5f, 0xb5, 0xab, 0x7a, 0x4a, 0xd4, 0x8e, 0xe2, 0xeb, 0xdb, 0x9e, 0x6a, 0x07, 0x86, 0xf8, 0x62, 0x7c, 0x66, 0x5e, 0x1d}, 
{ 0xb6, 0x90, 0x08, 0xd5, 0x69, 0x78, 0x8a, 0xc0, 0x07, 0x04, 0x28, 0xbd, 0xdc, 0xb5, 0xfe, 0x15, 0x71, 0x0b, 0xf2, 0xd4, 0x13, 0xef, 0xef, 0x50, 0xc5, 0x56, 0xc0, 0x02, 0x77, 0x25, 0x25, 0xc2}, 
{ 0x80, 0x1e, 0xf9, 0x00, 0x88, 0xd8, 0x85, 0x1b, 0x56, 0x25, 0xc8, 0x52, 0x2e, 0xbb, 0x32, 0x5f, 0x87, 0xae, 0x19, 0xcc, 0xa8, 0x21, 0x71, 0x58, 0x64, 0xd5, 0x85, 0xbc, 0x0c, 0xa6, 0xcd, 0xea}, 
{ 0xd5, 0xe7, 0x7d, 0x90, 0x9e, 0xa9, 0xd2, 0xd3, 0x8b, 0xe4, 0xf4, 0x34, 0xb7, 0xe4, 0xc6, 0x9e, 0xa3, 0x69, 0xe1, 0x66, 0xec, 0xc3, 0x4a, 0xf4, 0xc0, 0x31, 0x72, 0x17, 0x3e, 0xbe, 0xfc, 0x6f}, 
{ 0xd6, 0x5b, 0x2f, 0x39, 0xa2, 0xaa, 0xc0, 0xa7, 0xb5, 0x35, 0xfd, 0x24, 0x8f, 0x5f, 0x9b, 0xbd, 0xbb, 0xa9, 0xf2, 0xf3, 0x53, 0x2f, 0xe3, 0xdc, 0x5c, 0xd1, 0xa7, 0x36, 0xa1, 0xeb, 0xce, 0xe6}, 
{ 0xea, 0xb4, 0x1a, 0x97, 0x68, 0x5a, 0x35, 0x30, 0x4f, 0xc0, 0x5f, 0xe4, 0xda, 0x22, 0x82, 0x45, 0xb5, 0xc8, 0x46, 0xf4, 0x1e, 0x8c, 0x75, 0xef, 0xad, 0x5b, 0xe0, 0x53, 0x3d, 0xa2, 0x77, 0x99}, 
{ 0xef, 0x14, 0xb3, 0x38, 0x00, 0x77, 0x77, 0x91, 0x0a, 0x62, 0x30, 0xc8, 0x16, 0x42, 0xe7, 0x1a, 0xf5, 0xdf, 0x5d, 0x83, 0xbf, 0xb5, 0x86, 0x59, 0x90, 0x47, 0x67, 0x3f, 0xca, 0xc1, 0x48, 0x93}, 
{ 0xc9, 0xbc, 0x50, 0xd0, 0x2e, 0x2b, 0x96, 0x0a, 0x36, 0xfe, 0x15, 0x9b, 0x6d, 0xcd, 0x01, 0xbb, 0x7a, 0xce, 0x93, 0x77, 0x91, 0x31, 0x3d, 0x53, 0xcf, 0x1e, 0x99, 0xaf, 0xa3, 0x38, 0x6f, 0xca}, 
{ 0x6c, 0x83, 0x2d, 0x14, 0x43, 0xac, 0x40, 0xb7, 0x2f, 0xc4, 0x08, 0xda, 0x50, 0x5c, 0xca, 0x19, 0x0e, 0xc2, 0x96, 0x8a, 0xea, 0x11, 0xf6, 0x6d, 0x04, 0x0b, 0xb3, 0x1b, 0x20, 0x16, 0x76, 0xb0}, 
{ 0xc1, 0xbc, 0xc3, 0x0c, 0x92, 0x67, 0x19, 0xf7, 0xcc, 0x8f, 0x60, 0xbf, 0xfa, 0xb8, 0x67, 0x6f, 0x46, 0x19, 0xdc, 0x5b, 0x7c, 0xe3, 0x7c, 0x35, 0xb5, 0x59, 0xdb, 0x3e, 0xf0, 0x8b, 0xcb, 0xd9}, 
{ 0x96, 0xcc, 0x64, 0xbb, 0x55, 0x25, 0xf0, 0x9f, 0x08, 0x13, 0xbf, 0xac, 0xa2, 0x5c, 0x15, 0x03, 0x2d, 0x3b, 0x38, 0xe3, 0xa6, 0x97, 0x6a, 0xa3, 0xdc, 0x35, 0x3d, 0xee, 0x3a, 0x27, 0xc8, 0x1d}, 
{ 0x12, 0xe5, 0xb0, 0x75, 0x06, 0xd7, 0x03, 0x08, 0x7d, 0x16, 0xc6, 0x24, 0x60, 0x8e, 0xb6, 0x3b, 0xea, 0xec, 0x1d, 0xf9, 0x00, 0x53, 0x15, 0xcb, 0x23, 0x96, 0x51, 0xd5, 0x38, 0x4e, 0x2a, 0xe5}, 
{ 0x88, 0x87, 0x5d, 0x45, 0x97, 0x1a, 0xe2, 0x4a, 0x7e, 0xfb, 0x56, 0x43, 0x73, 0x1e, 0xa7, 0x88, 0x79, 0x80, 0x8c, 0xf9, 0xb6, 0x6d, 0xf4, 0x16, 0xf2, 0x8b, 0xc6, 0x4a, 0xc9, 0x39, 0x25, 0x7d}, 
{ 0x83, 0xc4, 0x49, 0xc0, 0xf1, 0xeb, 0xe0, 0x05, 0x0e, 0xa8, 0x07, 0x92, 0x20, 0x65, 0x64, 0x59, 0xe7, 0x36, 0x64, 0x8d, 0xf0, 0x0e, 0x1c, 0xf6, 0x4f, 0xb8, 0xbf, 0x9d, 0xbb, 0xeb, 0x36, 0x62}, 
{ 0x0f, 0x9c, 0x80, 0xbe, 0xc6, 0xaf, 0x19, 0xb8, 0xd0, 0x6c, 0xd1, 0xba, 0xea, 0x48, 0x8f, 0xc8, 0x4e, 0x70, 0x86, 0x9e, 0xd0, 0x2f, 0x01, 0xe5, 0x60, 0xac, 0x0d, 0x90, 0x44, 0xd1, 0x15, 0x82}, 
{ 0x49, 0x02, 0x39, 0xba, 0x4e, 0xa5, 0x98, 0x23, 0x58, 0x20, 0x4d, 0x8f, 0x56, 0x98, 0x17, 0x6c, 0x6b, 0x20, 0xb1, 0xa0, 0x3e, 0xbe, 0x0a, 0xeb, 0x11, 0x93, 0xaf, 0x79, 0xd8, 0x61, 0xb5, 0x88}, 
{ 0xde, 0x7a, 0xbb, 0x2e, 0x6e, 0xf6, 0xd2, 0x6f, 0xa4, 0x44, 0x42, 0xef, 0x7c, 0x54, 0x0b, 0xd5, 0xaa, 0x2e, 0x54, 0x63, 0x73, 0xc9, 0x23, 0xe7, 0xd9, 0x76, 0x54, 0xce, 0x38, 0xfe, 0xba, 0x31}, 
{ 0x8f, 0xed, 0x99, 0xe3, 0x96, 0x63, 0xd2, 0x86, 0xbc, 0x66, 0x86, 0x12, 0x84, 0x84, 0x79, 0x9d, 0xb5, 0xbd, 0x2c, 0x14, 0x47, 0x99, 0xf4, 0xb3, 0x73, 0xe4, 0xa4, 0x7c, 0x3b, 0x19, 0x80, 0xb7}, 
{ 0x90, 0x53, 0x90, 0xd7, 0x2a, 0xda, 0xc3, 0xcc, 0x72, 0x84, 0x10, 0x7f, 0x42, 0x82, 0x01, 0x71, 0x76, 0x51, 0x8c, 0x83, 0x56, 0xbc, 0x01, 0x93, 0xdb, 0x98, 0x15, 0xac, 0x6e, 0x56, 0xab, 0x28}, 
{ 0x79, 0xa2, 0x96, 0x80, 0x6c, 0xa4, 0x1c, 0x54, 0xce, 0x15, 0x1f, 0x26, 0xe9, 0x04, 0x49, 0x4b, 0x33, 0xea, 0xf5, 0x59, 0x07, 0x98, 0x74, 0xd3, 0x85, 0x09, 0x1f, 0xe4, 0xb9, 0x8f, 0xe4, 0x5e}, 
{ 0x90, 0x52, 0x7c, 0x8a, 0xcf, 0x39, 0x83, 0x1f, 0x4f, 0x48, 0x6c, 0x90, 0x0d, 0x6a, 0xc6, 0x98, 0x9e, 0x80, 0x20, 0x59, 0x27, 0x95, 0x2c, 0xa8, 0x4b, 0xa2, 0xaa, 0xa9, 0x99, 0x53, 0xcd, 0xbc}, 
{ 0x84, 0x6c, 0x00, 0x5b, 0xc7, 0x01, 0x63, 0xaa, 0x11, 0xa7, 0xfe, 0xad, 0x31, 0xd5, 0x95, 0x38, 0xcf, 0x91, 0x54, 0x93, 0xe8, 0xc5, 0x76, 0x7d, 0xb1, 0xae, 0x20, 0xba, 0xac, 0xf8, 0x4c, 0x6b}, 
{ 0x9e, 0x92, 0x3f, 0x46, 0x00, 0x12, 0x94, 0xa2, 0xe5, 0x91, 0x52, 0xcd, 0xe6, 0x5c, 0x47, 0xe0, 0xb9, 0xd5, 0x3d, 0x3a, 0x26, 0x29, 0x81, 0xfb, 0x57, 0x01, 0x2b, 0x76, 0x23, 0x51, 0x30, 0x03}, 
{ 0xba, 0x78, 0x7c, 0x83, 0x9e, 0x8e, 0x62, 0x41, 0x1f, 0x73, 0x9b, 0x02, 0x8a, 0xb2, 0x88, 0xd8, 0x7a, 0x01, 0x36, 0xfd, 0xb5, 0xc0, 0x8b, 0x9a, 0x5c, 0x7e, 0x82, 0x1d, 0xe0, 0x03, 0xec, 0xb4}, 
{ 0x83, 0x75, 0x8e, 0xce, 0x66, 0x0b, 0x60, 0xf0, 0xf0, 0xdd, 0x79, 0x87, 0x6e, 0xb1, 0xb8, 0x95, 0x4e, 0x69, 0x3e, 0xce, 0x30, 0x30, 0xa6, 0x28, 0x2e, 0xa8, 0x14, 0x95, 0xdc, 0x7e, 0x14, 0xba}, 
{ 0xe4, 0xab, 0xe3, 0x09, 0x1e, 0x99, 0x8f, 0x38, 0xca, 0x9a, 0x47, 0x96, 0xf7, 0x43, 0xeb, 0x07, 0x59, 0x36, 0x58, 0x25, 0xe6, 0x3f, 0xf5, 0xbe, 0xec, 0x1d, 0x55, 0x45, 0x8d, 0x59, 0x17, 0x9e}, 
{ 0xdb, 0x20, 0xa2, 0x47, 0xc9, 0x2f, 0xf2, 0xbb, 0x2d, 0x6c, 0xd7, 0x8e, 0xd4, 0xc8, 0x23, 0xad, 0xbf, 0x5e, 0x26, 0xcd, 0x16, 0x2c, 0x0b, 0xe8, 0x66, 0x7f, 0x86, 0xd5, 0x6f, 0x5b, 0xb7, 0xce}, 
{ 0xfb, 0xf0, 0xb0, 0x5a, 0x0f, 0xc8, 0x0c, 0x35, 0x2d, 0xb0, 0xf9, 0x1d, 0xdd, 0x0c, 0x26, 0xc7, 0x09, 0x19, 0xe5, 0xdb, 0x33, 0x88, 0x3d, 0xb4, 0x7d, 0xaa, 0xbc, 0x09, 0xfc, 0x5e, 0x71, 0x92}, 
{ 0x1b, 0x68, 0x52, 0xa0, 0x9a, 0x32, 0xa2, 0x0b, 0x9f, 0xf0, 0x06, 0xf6, 0x04, 0x08, 0x6b, 0xad, 0xf7, 0xf9, 0x30, 0xf5, 0x68, 0x71, 0xba, 0x4f, 0xd7, 0xe7, 0xa9, 0xe8, 0x31, 0xbf, 0x22, 0xf6}, 
{ 0x66, 0x57, 0x3d, 0xf3, 0x9f, 0x8b, 0x77, 0x03, 0xa4, 0x42, 0xf6, 0x02, 0xa6, 0x64, 0x88, 0xa2, 0xd9, 0x30, 0x52, 0x88, 0x72, 0x82, 0x58, 0x02, 0x85, 0x5b, 0x29, 0xd2, 0x7e, 0xcf, 0x9a, 0x89}, 
{ 0xa9, 0xa1, 0x1e, 0x90, 0x7a, 0xd6, 0xc4, 0xc7, 0xb1, 0x6c, 0x5d, 0x5b, 0xf0, 0xb7, 0xb2, 0xbc, 0xc7, 0xa3, 0xe6, 0x3c, 0xd1, 0x9b, 0x81, 0x34, 0x09, 0x3a, 0x02, 0xe5, 0x1e, 0x95, 0xd1, 0x2f}, 
{ 0xf5, 0xbf, 0x36, 0x7d, 0xc2, 0xdb, 0x11, 0xce, 0x3c, 0xe9, 0xfc, 0x15, 0xea, 0xa5, 0xe6, 0x06, 0x9c, 0xa4, 0xa0, 0xce, 0xd3, 0x02, 0xdc, 0x75, 0xd0, 0xb5, 0xe6, 0x40, 0x80, 0xfb, 0xf1, 0x69}, 
{ 0x3b, 0x28, 0x0d, 0x37, 0x41, 0x6a, 0x5d, 0x57, 0x47, 0xfa, 0x05, 0xeb, 0xf1, 0xca, 0xd9, 0xbc, 0x9a, 0x58, 0xa1, 0x6a, 0x75, 0x64, 0xa5, 0xd1, 0xa9, 0x06, 0xb4, 0x0e, 0xca, 0x1f, 0xde, 0x62}, 
{ 0x2f, 0xbd, 0x5e, 0x42, 0x95, 0x7e, 0x7d, 0x87, 0x8d, 0x60, 0xa0, 0xff, 0x05, 0x6f, 0x34, 0xf1, 0xee, 0x43, 0x12, 0xf7, 0x8e, 0x42, 0x94, 0xd0, 0xfa, 0x07, 0x78, 0x5c, 0x83, 0x8b, 0x20, 0xf1}, 
{ 0xba, 0xa0, 0x75, 0xcd, 0x5f, 0xc1, 0x7c, 0x47, 0x6a, 0x6e, 0x73, 0xbe, 0x76, 0x13, 0xf0, 0xde, 0x54, 0x70, 0x6a, 0xce, 0xea, 0xe1, 0x51, 0xeb, 0x32, 0x59, 0x86, 0xc2, 0x9a, 0x03, 0xb6, 0x66}, 
{ 0x65, 0x19, 0xf8, 0x20, 0x1f, 0x4c, 0x7f, 0x39, 0x20, 0xd9, 0x5b, 0x9a, 0xc5, 0x8a, 0xf7, 0xb7, 0xfa, 0xb0, 0x7d, 0x54, 0x37, 0x5d, 0x8c, 0x1a, 0x6f, 0xff, 0xcb, 0xc8, 0xad, 0xd2, 0x9b, 0xf2}, 
{ 0xea, 0x51, 0xcf, 0xd9, 0x37, 0xd4, 0xa0, 0xa8, 0x55, 0xd9, 0x8d, 0xee, 0x36, 0xfb, 0xed, 0xbf, 0x83, 0xf8, 0x28, 0x5f, 0xa7, 0x87, 0xdd, 0xf7, 0xf6, 0xb4, 0x2e, 0x6f, 0xe6, 0x5e, 0x9d, 0x8c}, 
{ 0x9d, 0x2a, 0x41, 0x7e, 0x26, 0x5f, 0x2a, 0xa8, 0xfc, 0xe8, 0xae, 0x2c, 0x50, 0x9b, 0x5a, 0x77, 0xa0, 0xd4, 0xe0, 0x78, 0x05, 0x0c, 0x5b, 0xf1, 0x97, 0x01, 0x8c, 0x76, 0x2e, 0xd8, 0x0f, 0x76}, 
{ 0xd3, 0x28, 0xf2, 0x55, 0xdf, 0xd4, 0xa0, 0xd3, 0xbf, 0x6b, 0xad, 0xce, 0x03, 0xce, 0x05, 0x7d, 0xf3, 0x4c, 0xfc, 0xa1, 0x5f, 0xfc, 0xd9, 0x25, 0x1e, 0x54, 0x1c, 0x70, 0x51, 0x2e, 0x77, 0x0e}, 
{ 0x42, 0x1b, 0xd4, 0x96, 0x56, 0x0f, 0xcc, 0x71, 0xe4, 0x41, 0x84, 0xdc, 0x93, 0x97, 0xc0, 0x52, 0x18, 0x45, 0xdc, 0x6f, 0xbe, 0xa5, 0xd6, 0x2f, 0xd4, 0x40, 0x84, 0x58, 0x86, 0x86, 0x0f, 0xe3}, 
{ 0x0d, 0x2b, 0x38, 0x76, 0xbf, 0x9b, 0x3d, 0xec, 0x5f, 0x7b, 0x4d, 0x99, 0xa8, 0x3d, 0xc5, 0x8d, 0xc9, 0x8f, 0xaf, 0x81, 0x4d, 0x82, 0xcc, 0xaf, 0xa9, 0x63, 0x85, 0x1e, 0x38, 0x97, 0xb4, 0xe4}, 
{ 0xcb, 0xf8, 0x92, 0x20, 0xac, 0x5e, 0x87, 0xbc, 0x25, 0x73, 0x0e, 0x7c, 0xff, 0xf1, 0x49, 0x8e, 0x3b, 0x3f, 0x7f, 0xa6, 0xe8, 0x95, 0xc4, 0xb7, 0x6d, 0xd3, 0xd1, 0x1c, 0x72, 0x04, 0x4d, 0xde}, 
{ 0xb8, 0x18, 0x5d, 0xbc, 0x15, 0x3c, 0x5e, 0x3b, 0x96, 0x95, 0xb1, 0x56, 0xcf, 0x2d, 0x42, 0x91, 0x9d, 0x6b, 0xee, 0x6b, 0xd8, 0xa5, 0x9f, 0xa8, 0x53, 0x66, 0xb0, 0x36, 0xed, 0xa2, 0x02, 0xe5}, 
{ 0xb0, 0xda, 0x09, 0xba, 0x69, 0x53, 0x5b, 0xd0, 0x05, 0x18, 0xd7, 0x02, 0x4c, 0x75, 0xc3, 0xca, 0x3f, 0x8d, 0x07, 0x14, 0x21, 0x22, 0x1c, 0xb3, 0x41, 0x10, 0x0d, 0x00, 0xec, 0x50, 0x4d, 0x29}, 
{ 0x9b, 0x39, 0x92, 0x52, 0x59, 0x54, 0x9c, 0x34, 0xf9, 0xb7, 0x33, 0xa0, 0x22, 0xdd, 0x8d, 0x6f, 0x02, 0xb6, 0x1d, 0xd6, 0x26, 0x17, 0xe3, 0x0a, 0xf9, 0x62, 0x74, 0x35, 0xd3, 0xde, 0x04, 0x66}, 
{ 0x56, 0x5d, 0x0f, 0xc1, 0x1d, 0x59, 0x42, 0xc4, 0xdc, 0xb3, 0xd9, 0xa6, 0x5c, 0x54, 0xa5, 0x38, 0xe5, 0xc7, 0x09, 0x40, 0x57, 0xec, 0x3f, 0x59, 0x4e, 0x7e, 0x47, 0x07, 0x37, 0x90, 0x80, 0xf5}, 
{ 0x66, 0x78, 0x4d, 0xeb, 0x54, 0x13, 0x6f, 0xd9, 0x03, 0xbb, 0x8e, 0x59, 0xe6, 0xae, 0xf5, 0x29, 0xdb, 0x26, 0xff, 0xa1, 0xfa, 0x9b, 0xdc, 0xc7, 0xac, 0x5a, 0xd1, 0x22, 0xbc, 0xb6, 0xc4, 0xe0}, 
{ 0x94, 0x89, 0xbe, 0xa8, 0x4b, 0xa2, 0xaf, 0x2d, 0x48, 0xfa, 0x60, 0xfa, 0x80, 0x4e, 0x6a, 0xae, 0xd9, 0xa7, 0x49, 0x48, 0xe1, 0xde, 0x3f, 0xea, 0xd6, 0x76, 0xbd, 0xf6, 0x50, 0xa0, 0xa2, 0x5d}, 
{ 0x93, 0x2c, 0x82, 0x54, 0x71, 0x1e, 0xe1, 0xd7, 0x1d, 0x9f, 0x68, 0x78, 0x26, 0xdb, 0xc9, 0xe0, 0xbf, 0xdc, 0x36, 0x93, 0xf3, 0xcb, 0x99, 0x53, 0x3c, 0x06, 0x43, 0x88, 0xae, 0xbe, 0xa5, 0xb3}, 
{ 0x7b, 0xb4, 0x40, 0x63, 0x6a, 0x8b, 0x5e, 0x58, 0xfe, 0x4d, 0xc2, 0x02, 0xa7, 0x81, 0x29, 0x01, 0x4a, 0x06, 0x83, 0x86, 0x7a, 0x28, 0x02, 0xda, 0xf8, 0x13, 0x05, 0xff, 0x4d, 0x39, 0x8f, 0x77}, 
{ 0xf2, 0x88, 0x48, 0x31, 0xf0, 0x20, 0x97, 0xa0, 0x79, 0xc5, 0x5b, 0x05, 0x42, 0x8a, 0xe5, 0x5d, 0x3a, 0x18, 0xc3, 0x5d, 0xeb, 0x7d, 0xf2, 0x12, 0x49, 0x74, 0x41, 0xee, 0xfd, 0x9b, 0x79, 0x8b}, 
{ 0x29, 0x02, 0x06, 0x73, 0xbd, 0x3f, 0x18, 0xa5, 0xe4, 0xe1, 0x41, 0x04, 0x47, 0x59, 0x65, 0x4c, 0x2f, 0x60, 0x06, 0x94, 0xfe, 0xbf, 0x59, 0x57, 0x27, 0xb3, 0xbf, 0xbb, 0x35, 0xb5, 0x7e, 0x1b}, 
{ 0xa8, 0x83, 0xaa, 0x1a, 0xca, 0x89, 0x58, 0x9f, 0xaa, 0xfc, 0xe7, 0xc6, 0xe6, 0x80, 0xe7, 0xd7, 0xa5, 0x52, 0xc1, 0x44, 0x46, 0x54, 0x50, 0xe7, 0x5c, 0x45, 0xf4, 0x18, 0x8a, 0x99, 0x51, 0x90}, 
{ 0x1b, 0xba, 0x99, 0x8c, 0x0b, 0xb0, 0xb8, 0x63, 0x53, 0x67, 0x57, 0xc5, 0xf2, 0xf3, 0x12, 0xf9, 0x3a, 0xd1, 0xb8, 0x6e, 0x1f, 0xaa, 0xd1, 0x44, 0xa5, 0x03, 0x04, 0x17, 0x3c, 0x3d, 0xce, 0xfc}, 
{ 0xa7, 0x8e, 0xaf, 0xea, 0x78, 0x3a, 0x37, 0x66, 0xf2, 0xf7, 0xb2, 0x8b, 0xba, 0x0e, 0x58, 0x8c, 0x41, 0x5b, 0xc0, 0x4c, 0x0b, 0xff, 0xe0, 0x0d, 0x07, 0xc3, 0x55, 0x67, 0x5c, 0x42, 0xfa, 0xb2}, 
{ 0x9a, 0x44, 0x42, 0x60, 0xde, 0x1e, 0x5c, 0x0c, 0x35, 0xad, 0xac, 0x35, 0xc3, 0xc8, 0xba, 0xf7, 0xcb, 0x72, 0x6b, 0x9c, 0xed, 0xa9, 0x9e, 0xae, 0x7b, 0xa2, 0xde, 0xfd, 0x13, 0x16, 0xe5, 0x11}, 
{ 0x8f, 0x6b, 0xb5, 0x27, 0x46, 0x56, 0x87, 0x8f, 0x4a, 0x95, 0x89, 0x25, 0x74, 0x31, 0xc6, 0xa7, 0x18, 0x18, 0xf3, 0xa3, 0xa5, 0xa4, 0x48, 0xc3, 0x38, 0xa5, 0x26, 0x1d, 0xf7, 0xdd, 0x51, 0xdd}, 
{ 0x8e, 0xe0, 0x31, 0x3f, 0x86, 0x44, 0x2c, 0x4f, 0x4d, 0x77, 0xd0, 0x0a, 0x80, 0x60, 0xc5, 0xc0, 0x97, 0x12, 0xb3, 0x36, 0xa5, 0x2e, 0xaf, 0x07, 0xf9, 0x52, 0xd8, 0xf9, 0x32, 0xb5, 0x12, 0xc0}, 
{ 0x5b, 0x0f, 0xc1, 0x9f, 0xec, 0xa7, 0x1c, 0x7b, 0x4a, 0x32, 0x2f, 0xf5, 0xc8, 0x86, 0x7d, 0x10, 0xb1, 0x7f, 0x3a, 0x57, 0xbe, 0x9e, 0xab, 0x3c, 0xbf, 0xbe, 0x3e, 0x33, 0x3a, 0xcd, 0xc9, 0x7c}, 
{ 0xeb, 0xc9, 0xe1, 0xc5, 0xd9, 0xa5, 0x2a, 0xa5, 0x81, 0xa3, 0xf1, 0x73, 0x5b, 0x37, 0xfd, 0x10, 0x58, 0x3c, 0xfa, 0x4a, 0x30, 0xae, 0xeb, 0x4e, 0xf3, 0xf5, 0x25, 0x5c, 0x51, 0x83, 0x43, 0x88}, 
{ 0xf3, 0x81, 0x73, 0xe9, 0x1d, 0x8a, 0x52, 0xef, 0x2f, 0x8c, 0x6a, 0xa1, 0xb4, 0x26, 0x3b, 0x79, 0x1d, 0x99, 0xad, 0x61, 0xca, 0xcd, 0x11, 0x4c, 0x61, 0x27, 0x2a, 0xcb, 0xd2, 0x7b, 0x0d, 0x63}, 
{ 0x11, 0x01, 0x7b, 0xb0, 0x9b, 0x5b, 0x3d, 0x0a, 0xc2, 0x9e, 0x12, 0x08, 0x9f, 0x6d, 0x3e, 0x89, 0xde, 0x6c, 0xbb, 0x15, 0x89, 0x0a, 0x6f, 0x49, 0x2b, 0x52, 0xa0, 0x82, 0x92, 0xc6, 0xd0, 0x63}, 
{ 0xad, 0x67, 0x61, 0xd4, 0xd9, 0xac, 0xdd, 0x45, 0x2b, 0x9d, 0x21, 0xaf, 0x35, 0x7a, 0xba, 0x26, 0xae, 0x18, 0x52, 0x68, 0xd8, 0xa7, 0x83, 0xb8, 0x6e, 0x8d, 0x36, 0x47, 0xa2, 0xc5, 0x33, 0xaa}, 
{ 0x5e, 0x33, 0xa7, 0x30, 0x8c, 0x03, 0xcc, 0x0d, 0xfe, 0x03, 0xcd, 0x31, 0x22, 0x22, 0x28, 0x23, 0x7f, 0x10, 0x46, 0x49, 0x95, 0x2d, 0xce, 0x4d, 0x68, 0x15, 0x72, 0xa3, 0x5d, 0x43, 0xf0, 0x8e}, 
{ 0x36, 0xf8, 0x44, 0x12, 0xc1, 0x4d, 0x72, 0xc3, 0x16, 0x97, 0x82, 0xb5, 0x24, 0x22, 0x0f, 0x9c, 0xca, 0x10, 0xd5, 0xab, 0xf2, 0x9d, 0x55, 0x76, 0x4c, 0xab, 0x1d, 0x53, 0xa1, 0x4d, 0xfe, 0x2a}, 
{ 0x2a, 0x45, 0x01, 0xb5, 0x6d, 0x1d, 0x59, 0x7e, 0x10, 0xf7, 0x70, 0xe4, 0xff, 0x79, 0x73, 0xbe, 0x96, 0x43, 0xee, 0x22, 0xe4, 0xed, 0xfd, 0x1b, 0x1d, 0x7d, 0x56, 0x51, 0x7c, 0xf7, 0xef, 0xa3}, 
{ 0x79, 0xb2, 0x8c, 0x12, 0xe4, 0xb2, 0xb5, 0x28, 0x57, 0xae, 0x2b, 0xd5, 0x93, 0x85, 0x82, 0xc8, 0x83, 0x73, 0x57, 0x79, 0xd5, 0xbd, 0xe0, 0x27, 0xb5, 0xf2, 0x90, 0x1e, 0xcf, 0xd2, 0x03, 0x43}, 
{ 0x33, 0x30, 0x81, 0x83, 0xec, 0xc5, 0xe4, 0xe1, 0x8d, 0x2a, 0xcd, 0x4b, 0x31, 0x87, 0x1c, 0xbb, 0xec, 0xfc, 0xf0, 0x74, 0x00, 0x8a, 0x21, 0xd3, 0x2b, 0xe2, 0x5f, 0x50, 0xc0, 0xf4, 0xb7, 0xf5}, 
{ 0x11, 0x7f, 0x27, 0x35, 0x35, 0x81, 0x58, 0xbc, 0x7b, 0xb9, 0x81, 0xfb, 0x34, 0xe1, 0xee, 0x6a, 0x47, 0x31, 0x56, 0x9d, 0x73, 0x26, 0x98, 0x20, 0xfc, 0xe9, 0xc2, 0x1e, 0xbc, 0x30, 0xed, 0x86}, 
{ 0x0c, 0xf3, 0x42, 0xd7, 0x23, 0x90, 0x94, 0xd2, 0x62, 0xb5, 0xa8, 0x63, 0x9e, 0xbf, 0xc8, 0xae, 0xb8, 0x64, 0x2d, 0xcd, 0xc1, 0xe5, 0x93, 0x41, 0x0f, 0x73, 0xb9, 0x35, 0xba, 0xcd, 0xfa, 0xbd}, 
{ 0xb6, 0x92, 0xe5, 0xb5, 0x74, 0xd5, 0x5d, 0xa9, 0x3d, 0xb7, 0xb2, 0x48, 0x88, 0xc2, 0x1f, 0x3a, 0x2b, 0x23, 0x08, 0xf6, 0x48, 0x4e, 0x1b, 0x38, 0xea, 0xe3, 0xd9, 0xa9, 0xd1, 0x3a, 0x42, 0xed}, 
{ 0xa1, 0x75, 0x05, 0x1b, 0x0f, 0x3f, 0xb6, 0x13, 0x5a, 0x92, 0x4f, 0x85, 0x54, 0x49, 0x26, 0xf9, 0xdb, 0x61, 0xac, 0x17, 0x73, 0x43, 0x8e, 0x6d, 0xd1, 0x86, 0x46, 0x9d, 0xe2, 0x95, 0xe5, 0xab}, 
{ 0x0b, 0x5a, 0xa6, 0xd9, 0xa4, 0xf3, 0xb9, 0x61, 0x5c, 0xaf, 0x45, 0x9b, 0x22, 0x65, 0x57, 0x02, 0xd5, 0x3e, 0x73, 0xaf, 0x29, 0x90, 0xe1, 0x29, 0x9b, 0xf3, 0xdb, 0x76, 0x29, 0x17, 0x6d, 0xdf}, 
{ 0x01, 0xc9, 0x4f, 0xe1, 0x69, 0xf7, 0xcd, 0x30, 0xc9, 0x9b, 0x1c, 0x7d, 0xe4, 0x82, 0x79, 0x1e, 0xb4, 0x7d, 0x3d, 0xfc, 0x99, 0x19, 0xb0, 0x07, 0xf0, 0x8b, 0xf1, 0x70, 0x67, 0xab, 0x7a, 0xb4}, 
{ 0x4b, 0xac, 0x68, 0x98, 0xcc, 0x26, 0x7e, 0xf7, 0x4b, 0xac, 0x52, 0x66, 0x25, 0x6f, 0x18, 0x81, 0xe4, 0x62, 0xaf, 0xca, 0x53, 0x89, 0x36, 0x79, 0xe1, 0x2d, 0xc1, 0x6b, 0x1a, 0xf7, 0xb8, 0xbb}, 
{ 0xf8, 0x7a, 0x70, 0x8d, 0x05, 0x99, 0x5f, 0x72, 0xbd, 0x2b, 0xbf, 0x39, 0x97, 0x3d, 0xfc, 0x2a, 0x91, 0x11, 0x8d, 0xe4, 0x37, 0x09, 0x26, 0x12, 0x9b, 0x72, 0xc5, 0x4e, 0x44, 0xcb, 0xb1, 0x49}, 
{ 0xf2, 0xd4, 0x6f, 0x7f, 0xf8, 0x04, 0x29, 0x39, 0x23, 0x8b, 0xd0, 0x5f, 0x48, 0xef, 0xad, 0x95, 0x65, 0x82, 0xa8, 0xc5, 0xfd, 0xc7, 0xcc, 0x40, 0xcf, 0x70, 0x93, 0x8c, 0xb7, 0xfb, 0xf5, 0x71}, 
{ 0x27, 0x9a, 0xfe, 0xcd, 0x38, 0x33, 0xaf, 0x83, 0xea, 0x0a, 0x38, 0xbf, 0xcd, 0xdb, 0xcf, 0x31, 0x56, 0x5d, 0x86, 0x8b, 0x0c, 0x5e, 0x74, 0xc8, 0x9e, 0x7d, 0x75, 0x0a, 0xd7, 0x98, 0x64, 0x12}, 
{ 0x99, 0x0a, 0xa9, 0xe5, 0x39, 0x2d, 0xb7, 0xf5, 0x23, 0x08, 0x86, 0xc9, 0xd8, 0x50, 0xbf, 0x5b, 0x03, 0xe1, 0x69, 0x8b, 0xbd, 0xd1, 0x99, 0x95, 0xe2, 0x63, 0x5a, 0x23, 0x7d, 0x4a, 0x45, 0x05}, 
{ 0xf0, 0xe3, 0x65, 0x57, 0xf8, 0xa1, 0xef, 0x39, 0xde, 0xd6, 0x00, 0xba, 0xa9, 0xed, 0x9f, 0x2d, 0xc1, 0x87, 0xfe, 0x4f, 0xa9, 0x92, 0xff, 0x39, 0x09, 0x61, 0x87, 0x49, 0x6f, 0xa4, 0x43, 0xba}, 
{ 0x56, 0x66, 0xec, 0xed, 0x4f, 0xd6, 0xe8, 0x4f, 0x6b, 0xb9, 0x51, 0xe2, 0x94, 0xa1, 0x68, 0x8d, 0xa1, 0x4a, 0xb0, 0x11, 0x63, 0x5d, 0x53, 0x7e, 0x0d, 0x4b, 0x58, 0x0a, 0xb4, 0xe7, 0x0a, 0x73}, 
{ 0xd0, 0xd0, 0xa4, 0xaf, 0x3e, 0x85, 0x44, 0x74, 0xb2, 0xc3, 0xfe, 0xe4, 0x58, 0xd2, 0x1b, 0xf1, 0x31, 0x84, 0xaf, 0x8c, 0x1a, 0x91, 0x01, 0xd3, 0x50, 0xf0, 0x60, 0x24, 0x75, 0x50, 0x75, 0x0c}, 
{ 0x74, 0xe0, 0x00, 0x1d, 0x26, 0x7d, 0x05, 0xe1, 0xaf, 0xae, 0x4c, 0x2f, 0x63, 0x01, 0x4d, 0xff, 0xa6, 0x08, 0x39, 0xea, 0xfc, 0x06, 0x59, 0x1a, 0xb9, 0xa6, 0x66, 0x1c, 0x00, 0x5d, 0x01, 0x01}, 
{ 0x8c, 0x40, 0xc6, 0xa0, 0xa7, 0xb4, 0x4c, 0xd4, 0xe8, 0xbf, 0xe4, 0x28, 0xf5, 0x9e, 0x42, 0x42, 0x64, 0xde, 0x0b, 0xe8, 0x74, 0x48, 0x60, 0x89, 0x0c, 0x73, 0x5e, 0x46, 0x0f, 0x02, 0x99, 0x81}, 
{ 0xcf, 0x7e, 0xe8, 0xc0, 0x3c, 0x88, 0x01, 0x37, 0x7f, 0xca, 0x37, 0x1c, 0xab, 0x59, 0x4e, 0x00, 0x35, 0xa7, 0x41, 0xf2, 0xbf, 0xfd, 0xb5, 0xc5, 0xb9, 0x86, 0xf6, 0xb1, 0x5e, 0xac, 0xa9, 0xf2}, 
{ 0x7d, 0x38, 0x7e, 0x25, 0xf9, 0xc4, 0x73, 0xb6, 0x7e, 0xed, 0xf7, 0x40, 0xcc, 0x78, 0x53, 0xaf, 0x30, 0x50, 0xb2, 0x17, 0x11, 0xc8, 0x73, 0xac, 0xed, 0x61, 0xd2, 0xc5, 0x2f, 0x6a, 0x77, 0xda}, 
{ 0x75, 0x50, 0xaa, 0xd5, 0xe7, 0xda, 0x19, 0xe2, 0x9e, 0x9f, 0x8e, 0x89, 0xdf, 0x25, 0x36, 0x23, 0xca, 0x8b, 0x65, 0x02, 0x7e, 0xd3, 0x87, 0xf3, 0x5e, 0xea, 0xf2, 0x03, 0x7a, 0x02, 0xb1, 0xd0}, 
{ 0xc6, 0x45, 0x11, 0x84, 0x44, 0xbd, 0x9d, 0xbf, 0xbd, 0xa5, 0x78, 0xce, 0x46, 0x60, 0x36, 0xbd, 0x7a, 0x7b, 0x54, 0x10, 0xbe, 0xaa, 0x3b, 0xfa, 0x7a, 0x5e, 0x7f, 0xe3, 0x03, 0x56, 0xea, 0xde}, 
{ 0x28, 0x58, 0x9c, 0xd4, 0x99, 0xb4, 0x75, 0x98, 0xdc, 0x12, 0x62, 0x01, 0x98, 0xde, 0x67, 0x80, 0x92, 0x07, 0x97, 0xe8, 0xe1, 0x3c, 0x2f, 0x56, 0xfa, 0xec, 0x35, 0x37, 0x45, 0x73, 0x1e, 0x46}, 
{ 0x7a, 0xdb, 0x72, 0x34, 0x2f, 0x6d, 0x42, 0x5d, 0x55, 0x76, 0x88, 0xde, 0x1f, 0x2a, 0xfa, 0xa6, 0x37, 0x2c, 0xfc, 0x33, 0x89, 0x95, 0x02, 0x7f, 0xdc, 0x0e, 0xdc, 0xa5, 0xd0, 0x99, 0x34, 0x9a}, 
{ 0x44, 0xf5, 0xa9, 0x0c, 0xe6, 0x61, 0xe3, 0x3b, 0x07, 0x2b, 0x29, 0xa8, 0x85, 0x8c, 0x5d, 0x5e, 0xfc, 0x57, 0xca, 0xcf, 0xcb, 0x14, 0x11, 0x19, 0xe2, 0x9d, 0x41, 0x46, 0x45, 0x19, 0x6b, 0x96}, 
{ 0x7e, 0x18, 0xaa, 0xbb, 0x85, 0xc3, 0x94, 0x34, 0x81, 0x33, 0xc8, 0x4f, 0x4b, 0x35, 0xfa, 0xb0, 0x75, 0x7f, 0x22, 0xc3, 0x56, 0xaa, 0x98, 0xda, 0xee, 0xcd, 0x5b, 0xa3, 0xfa, 0x43, 0xe0, 0xd4}, 
{ 0x08, 0x34, 0xd1, 0x5f, 0xba, 0x60, 0x56, 0x66, 0xa0, 0xec, 0x9a, 0xb3, 0xcb, 0x40, 0x42, 0xa1, 0x1c, 0x22, 0xac, 0x1f, 0xbd, 0x14, 0xb1, 0x0d, 0x9f, 0x00, 0x38, 0xba, 0x65, 0x5d, 0x55, 0x8c}, 
{ 0x95, 0x52, 0xde, 0x2f, 0x03, 0xc5, 0x64, 0x58, 0x07, 0x10, 0xde, 0x01, 0x24, 0x40, 0xf6, 0xb2, 0x55, 0x53, 0xf8, 0x34, 0xa5, 0x06, 0x67, 0x46, 0x60, 0xd6, 0x6b, 0x93, 0x5c, 0x23, 0x61, 0x62}, 
{ 0xfa, 0x56, 0x3d, 0x19, 0x2e, 0x30, 0xc2, 0x0d, 0x2f, 0x1b, 0xbb, 0xb1, 0xbb, 0xa7, 0x38, 0x00, 0x65, 0xa0, 0x9e, 0xff, 0xa8, 0x5a, 0x41, 0x15, 0xaf, 0x35, 0x2e, 0x7f, 0xaa, 0x8b, 0x5d, 0x6d}, 
{ 0x43, 0xc5, 0x6d, 0xa2, 0x4a, 0x0f, 0xff, 0x6e, 0xba, 0x0d, 0x9d, 0x83, 0x5b, 0x74, 0x2c, 0xdf, 0x5f, 0x6b, 0xd8, 0x12, 0xac, 0xfe, 0x00, 0x07, 0xd1, 0x70, 0xf4, 0x88, 0x31, 0xcc, 0x22, 0x11}, 
{ 0xcb, 0x24, 0x0c, 0xdf, 0x8a, 0x32, 0x8a, 0x96, 0xac, 0x98, 0x30, 0xa2, 0xfb, 0xda, 0x86, 0xc0, 0x1e, 0xf2, 0xff, 0xab, 0x71, 0xa2, 0x03, 0x54, 0x01, 0x30, 0x53, 0x9e, 0x48, 0x43, 0xc0, 0x98}, 
{ 0xde, 0x33, 0xa9, 0x67, 0xd0, 0x98, 0xc9, 0x05, 0xea, 0xb7, 0x13, 0xc7, 0x13, 0xf7, 0xa8, 0xfd, 0x7c, 0xec, 0x87, 0x1a, 0x67, 0xbc, 0x9f, 0x10, 0x2f, 0x92, 0x7d, 0x0c, 0xa6, 0x0a, 0xbe, 0xcb}, 
{ 0xd9, 0xba, 0x9a, 0x73, 0xef, 0x45, 0x34, 0xf5, 0x78, 0xd8, 0x68, 0x3d, 0xd8, 0x3d, 0x0f, 0x98, 0x3d, 0x58, 0xf9, 0xb8, 0x0d, 0x3d, 0x14, 0x85, 0xea, 0xee, 0x3c, 0xb0, 0x46, 0xd2, 0xb4, 0x3f}, 
{ 0x9e, 0x66, 0x87, 0xea, 0x8e, 0x97, 0x5e, 0xf3, 0xc3, 0x43, 0x63, 0x8e, 0xbd, 0xd8, 0xa5, 0x68, 0x6f, 0xf6, 0x82, 0x90, 0x0a, 0xf6, 0x6f, 0x57, 0xb6, 0x4f, 0xc4, 0xec, 0xcc, 0x9d, 0xf7, 0x3a}, 
{ 0x9b, 0xc6, 0x36, 0x3e, 0x6c, 0x66, 0xb9, 0x61, 0x73, 0x2e, 0x28, 0x28, 0x84, 0x73, 0xa4, 0x73, 0x79, 0x6f, 0xdc, 0xe5, 0x84, 0xa6, 0xfa, 0x53, 0xfb, 0xd7, 0xa2, 0x1e, 0xdb, 0xf5, 0x04, 0x01}, 
{ 0xec, 0xff, 0x64, 0x4d, 0x46, 0x0e, 0x0d, 0x3a, 0x5d, 0xf8, 0x1d, 0x93, 0x07, 0xc4, 0xad, 0x59, 0x6a, 0x16, 0x9a, 0x6c, 0xee, 0xe4, 0x94, 0x68, 0x83, 0x1c, 0xb7, 0xb2, 0x08, 0xb3, 0xab, 0x72}, 
{ 0x77, 0xd1, 0x93, 0xfe, 0xf1, 0x3e, 0xdc, 0xb9, 0x74, 0xf1, 0xc2, 0x7e, 0xeb, 0x3c, 0xaf, 0xe4, 0xe0, 0xb9, 0x86, 0x57, 0x61, 0xcf, 0xdf, 0x77, 0x79, 0x2a, 0x5b, 0xe3, 0x39, 0x3f, 0xbf, 0x15}, 
{ 0x8a, 0x35, 0x4c, 0x42, 0x12, 0xea, 0x5f, 0xf9, 0x82, 0x8c, 0x2d, 0x9d, 0x27, 0xfd, 0x1e, 0xf3, 0x03, 0x0a, 0x04, 0x80, 0xb9, 0x84, 0x3e, 0xaf, 0xe7, 0xf7, 0xc6, 0x4c, 0xb4, 0x20, 0xb8, 0xf8}, 
{ 0x98, 0x22, 0x95, 0xaf, 0xe9, 0xc5, 0x69, 0x8b, 0x20, 0x42, 0x18, 0x45, 0x39, 0x11, 0xe1, 0x28, 0xb1, 0xb9, 0x32, 0x40, 0x9a, 0x6c, 0x4f, 0x24, 0x36, 0x7f, 0xde, 0x41, 0x41, 0xa3, 0x43, 0xce}, 
{ 0xcc, 0xf6, 0xb6, 0x24, 0x7c, 0x8b, 0x03, 0x0c, 0xc2, 0x39, 0xf3, 0x19, 0x68, 0x49, 0x92, 0x1e, 0xa7, 0x01, 0x97, 0xb0, 0x23, 0xa5, 0x01, 0xca, 0x63, 0x4c, 0x3c, 0x14, 0x82, 0x1e, 0x57, 0x8c}, 
{ 0xfb, 0x9a, 0x88, 0xa4, 0xe9, 0x80, 0x84, 0x4e, 0x60, 0xbf, 0x28, 0xc6, 0x8a, 0x13, 0xa7, 0xf6, 0xa9, 0x71, 0x73, 0x3f, 0x5e, 0x59, 0xaf, 0xd9, 0x19, 0x6a, 0x84, 0x23, 0x02, 0xbd, 0x8d, 0x72}, 
{ 0x01, 0x9e, 0x58, 0x6a, 0x94, 0x0e, 0x42, 0x03, 0x1a, 0x1e, 0x64, 0x86, 0x0c, 0xa2, 0xc9, 0x3b, 0x33, 0x66, 0x67, 0xa3, 0xa9, 0x39, 0xac, 0x53, 0x7b, 0x60, 0x71, 0xe0, 0xc7, 0xfe, 0x4c, 0x10}, 
{ 0xdd, 0x25, 0x68, 0xb2, 0xcb, 0xa3, 0xed, 0x25, 0xc6, 0x8b, 0x86, 0x62, 0x73, 0x14, 0xf9, 0x71, 0x85, 0xa1, 0x38, 0xba, 0xb3, 0x57, 0xab, 0x92, 0x9a, 0xbf, 0x99, 0x3c, 0x8e, 0x6a, 0xd9, 0x07}, 
{ 0xc3, 0xa8, 0xae, 0x07, 0xc6, 0xe9, 0x63, 0x82, 0x22, 0xb4, 0xaa, 0x44, 0xaa, 0x51, 0x76, 0x56, 0x1c, 0x81, 0x47, 0x13, 0xf0, 0x31, 0x7d, 0xf3, 0xf1, 0xbf, 0x2d, 0x0d, 0xc1, 0x5b, 0x5d, 0x86}, 
{ 0x87, 0xeb, 0x10, 0xf4, 0x72, 0x3b, 0xf5, 0x9d, 0x7b, 0x1b, 0xde, 0x65, 0x68, 0x71, 0x84, 0xc1, 0x03, 0xd4, 0x09, 0xd6, 0xde, 0xf7, 0xb5, 0x7c, 0x9f, 0x5e, 0x3a, 0xf1, 0xe8, 0x53, 0x7e, 0x18}, 
{ 0xa0, 0x93, 0xd3, 0xbe, 0x31, 0x7b, 0x0e, 0x2b, 0xa8, 0x9f, 0x9d, 0x3e, 0x07, 0x17, 0xf6, 0x31, 0x99, 0x88, 0x9d, 0xca, 0xcf, 0x06, 0x05, 0x82, 0xf5, 0x91, 0x02, 0x96, 0x44, 0x9b, 0x99, 0x58}, 
{ 0x70, 0x28, 0x2f, 0xe2, 0x77, 0xa2, 0x92, 0x87, 0xbc, 0xfb, 0x33, 0x5a, 0x27, 0x96, 0x23, 0xab, 0x79, 0xb0, 0xeb, 0x4d, 0xbb, 0x03, 0x16, 0x40, 0xb9, 0x8a, 0x11, 0xd6, 0xa3, 0x70, 0x88, 0x65}, 
{ 0xf2, 0x19, 0x8b, 0x02, 0x35, 0xa8, 0x87, 0x39, 0xa7, 0x77, 0x70, 0xa4, 0xc8, 0xab, 0x53, 0x8a, 0x5d, 0xcb, 0xc2, 0xb5, 0xc4, 0x53, 0x97, 0x82, 0x31, 0xc2, 0x65, 0x34, 0xf2, 0x5a, 0x0a, 0x39}, 
{ 0xe4, 0x2f, 0x40, 0xb0, 0x9a, 0x7e, 0x90, 0x98, 0x29, 0x1c, 0x34, 0x37, 0xf6, 0xae, 0x0a, 0x9b, 0x06, 0x38, 0xfb, 0xd2, 0xab, 0x01, 0x97, 0xe1, 0x75, 0xb6, 0x1a, 0xa1, 0xe1, 0x60, 0x77, 0x24}, 
{ 0xdb, 0x98, 0x84, 0x93, 0xb9, 0xd9, 0x46, 0x47, 0xe2, 0x27, 0x1a, 0xbf, 0x21, 0xc8, 0xca, 0x41, 0x79, 0xf4, 0x24, 0x0f, 0x32, 0x8a, 0xea, 0x1d, 0x94, 0x2d, 0x68, 0xfb, 0x64, 0xeb, 0xd2, 0xf6}, 
{ 0x4c, 0xdc, 0xf1, 0x8e, 0xaf, 0xb5, 0xea, 0x97, 0x2d, 0x4d, 0x7a, 0xff, 0xb9, 0x24, 0xe7, 0x18, 0x7c, 0xcc, 0xe7, 0x20, 0x1f, 0xee, 0x68, 0x42, 0x7f, 0xa3, 0x99, 0x73, 0x3e, 0x16, 0xc9, 0x66}, 
{ 0x70, 0x45, 0x4d, 0xea, 0x12, 0x58, 0x21, 0x2a, 0x2f, 0x5f, 0x47, 0x5b, 0x79, 0x8f, 0x6a, 0xd6, 0xa5, 0x46, 0x9b, 0xb3, 0x0c, 0xea, 0xe2, 0xdb, 0x46, 0x6b, 0xba, 0xfe, 0xb9, 0x36, 0xee, 0x72}, 
{ 0x52, 0x9d, 0x00, 0x79, 0x0b, 0x29, 0x99, 0x5c, 0xb7, 0x14, 0x8c, 0x3e, 0xe1, 0x4d, 0xdb, 0x8e, 0x19, 0x51, 0xd9, 0x8c, 0xe3, 0xae, 0x6f, 0x79, 0x47, 0xcb, 0x31, 0x6d, 0xae, 0xa4, 0x44, 0x6d}, 
{ 0xc2, 0x72, 0x98, 0x12, 0x27, 0x11, 0x18, 0xb4, 0xf4, 0xd7, 0xd8, 0xec, 0xf1, 0x5b, 0xce, 0x99, 0x44, 0x2d, 0xf4, 0xb0, 0x6a, 0x9d, 0x67, 0x9c, 0x0e, 0x69, 0x44, 0xb7, 0x13, 0x53, 0x35, 0x5e}, 
{ 0x33, 0x35, 0x3b, 0x5c, 0xad, 0x9c, 0x63, 0x8a, 0xbf, 0xc7, 0x84, 0x0f, 0x68, 0x17, 0x06, 0xee, 0x70, 0x4b, 0xa2, 0xea, 0x86, 0x25, 0xb1, 0x7b, 0xcb, 0xec, 0x42, 0x3f, 0xd5, 0xc2, 0x29, 0x9a}, 
{ 0xe7, 0x7d, 0x62, 0x81, 0xf2, 0xf2, 0xc2, 0x93, 0x10, 0xfb, 0x82, 0xa8, 0x9c, 0x66, 0xe7, 0x89, 0x85, 0x1b, 0x0d, 0xa6, 0x94, 0xef, 0x4f, 0x71, 0xc2, 0xb6, 0x59, 0x51, 0xbe, 0x65, 0x63, 0xa6}, 
{ 0x4c, 0xc2, 0x56, 0x3c, 0xaa, 0x3c, 0x84, 0x21, 0x0b, 0x72, 0xce, 0x30, 0x24, 0xce, 0x8b, 0xaf, 0x07, 0x74, 0x3e, 0x6c, 0x4e, 0x60, 0x4a, 0xbe, 0x6f, 0xff, 0x13, 0x31, 0xca, 0x5d, 0x80, 0xd0}, 
{ 0x72, 0xe7, 0xbe, 0xca, 0xc6, 0xf1, 0xad, 0x22, 0x21, 0x3c, 0xa0, 0x1f, 0x18, 0x7e, 0xe6, 0x5c, 0xc8, 0xc8, 0x93, 0x5b, 0xdc, 0xec, 0xe6, 0x65, 0x65, 0xf7, 0x99, 0xcd, 0x78, 0x85, 0x69, 0x06}, 
{ 0xc8, 0x4f, 0x77, 0x31, 0x16, 0x41, 0x81, 0x55, 0x33, 0x74, 0x0d, 0x31, 0xeb, 0x18, 0x47, 0x03, 0x23, 0xe8, 0xf2, 0x29, 0x96, 0x68, 0x9b, 0x71, 0xec, 0x93, 0x06, 0x8e, 0x54, 0xfe, 0x63, 0x70}, 
{ 0x38, 0x02, 0x45, 0xf2, 0x67, 0x75, 0x44, 0x03, 0x0a, 0xc0, 0xdd, 0x54, 0xe0, 0x62, 0x61, 0xf1, 0xd6, 0xc0, 0x51, 0xc1, 0xeb, 0x21, 0xb5, 0x4d, 0xbd, 0x0b, 0xa4, 0x04, 0x05, 0x2c, 0x2c, 0x4f}, 
{ 0x04, 0x69, 0xb4, 0xd3, 0xf2, 0x4e, 0xe9, 0x7f, 0x83, 0x62, 0x00, 0x62, 0x71, 0xab, 0x42, 0x91, 0x6f, 0x8f, 0xf5, 0x30, 0xcc, 0x29, 0xee, 0x14, 0x85, 0xfb, 0x5a, 0x4e, 0x32, 0x90, 0xe4, 0x44}, 
{ 0xed, 0x1c, 0x6a, 0x91, 0x9e, 0x2c, 0xb9, 0x2c, 0x9d, 0x0a, 0x9d, 0x2f, 0x85, 0xa1, 0x34, 0x2a, 0x75, 0x6f, 0x56, 0xb5, 0x0f, 0xa8, 0xd6, 0x8d, 0x23, 0xc7, 0x12, 0x97, 0x56, 0xf2, 0xa3, 0x37}, 
{ 0x8e, 0x18, 0x4b, 0xe1, 0x43, 0xd2, 0x21, 0x39, 0xf1, 0xb1, 0x7d, 0x0c, 0x50, 0xfb, 0xb9, 0xfb, 0x28, 0x7e, 0xf7, 0x46, 0xff, 0xab, 0xff, 0x92, 0x4e, 0x50, 0x32, 0x50, 0xf0, 0x63, 0x44, 0x8a}, 
{ 0x71, 0x79, 0x2b, 0xcd, 0x04, 0x50, 0x4f, 0xf2, 0x6d, 0x33, 0x2a, 0x0a, 0x44, 0xc0, 0x16, 0xab, 0x34, 0x77, 0x21, 0x62, 0x2b, 0x43, 0xcd, 0xb4, 0x82, 0x19, 0x9f, 0x86, 0xa4, 0xd1, 0x6f, 0xa7}, 
{ 0xb8, 0x16, 0x2f, 0xc9, 0x87, 0xa3, 0x3f, 0x5d, 0x0f, 0x89, 0xe3, 0x38, 0xed, 0x50, 0x7c, 0xf8, 0x0b, 0xd4, 0x70, 0x82, 0xb2, 0x57, 0x8a, 0xc3, 0x3f, 0x21, 0x93, 0xb6, 0xdb, 0xa5, 0x7e, 0x46}, 
{ 0x82, 0xbb, 0xe4, 0x93, 0xbd, 0xb8, 0x03, 0xd9, 0x49, 0xf8, 0xdc, 0x81, 0x57, 0x97, 0x33, 0xea, 0x6a, 0xc3, 0x25, 0xbf, 0xe3, 0xa0, 0xbe, 0x2f, 0x36, 0x32, 0xd1, 0xdc, 0xf1, 0x07, 0xfc, 0x18}, 
{ 0xb4, 0x88, 0xd0, 0x9f, 0x6c, 0xf4, 0xca, 0xbd, 0xdf, 0xcd, 0x3c, 0x67, 0x8a, 0x43, 0x02, 0x8c, 0xa8, 0xcd, 0x89, 0xe5, 0x8c, 0x2c, 0xdd, 0x67, 0x95, 0x1c, 0xee, 0x42, 0xb5, 0x21, 0xde, 0xb2}, 
{ 0xf7, 0x6f, 0x4c, 0x78, 0x3b, 0x21, 0x8e, 0xda, 0xca, 0xcb, 0xef, 0xc1, 0x99, 0xa6, 0x20, 0x30, 0x8b, 0x03, 0xcf, 0x35, 0xcf, 0x64, 0xd0, 0x1e, 0x18, 0x70, 0x84, 0xd1, 0xfe, 0xed, 0x6f, 0xc5}, 
{ 0xeb, 0x5c, 0xa3, 0x35, 0x32, 0x6a, 0xfa, 0xd3, 0xaa, 0xef, 0xc6, 0x2b, 0xe3, 0x0a, 0x29, 0x8b, 0xc6, 0x07, 0xe8, 0x11, 0xfe, 0xf0, 0x78, 0x5a, 0x83, 0x4d, 0xbf, 0xf6, 0x67, 0x83, 0x37, 0xee}, 
{ 0xed, 0xcc, 0x0c, 0x2a, 0xaa, 0x2d, 0x53, 0xce, 0x13, 0x46, 0xc8, 0x2d, 0x66, 0xf6, 0xc6, 0x42, 0xca, 0x4b, 0x6e, 0xf5, 0x78, 0x53, 0x88, 0xb4, 0x97, 0x74, 0xfe, 0x13, 0x84, 0xaf, 0x54, 0xa8}, 
{ 0x5f, 0xf6, 0x9f, 0x51, 0xcd, 0xca, 0xbe, 0xea, 0x1a, 0x83, 0x63, 0x42, 0x13, 0x23, 0x72, 0x11, 0xbc, 0x51, 0xe1, 0x91, 0x77, 0x10, 0x4d, 0xc9, 0xb9, 0xdd, 0x9b, 0x73, 0x9a, 0x6a, 0x8b, 0xa2}, 
{ 0xe0, 0x26, 0xb4, 0xeb, 0x87, 0x95, 0xd8, 0x56, 0x33, 0xd6, 0xab, 0xa3, 0xae, 0xbf, 0x41, 0xc8, 0x18, 0x7a, 0x6a, 0x8b, 0x28, 0x4f, 0xc8, 0x24, 0x6d, 0xfb, 0xe5, 0xb4, 0xc0, 0x17, 0x22, 0x23}, 
{ 0x4c, 0x35, 0x14, 0xb0, 0x7e, 0x7f, 0xc4, 0xb2, 0xef, 0xaf, 0xfd, 0x23, 0xeb, 0x76, 0xcb, 0x67, 0x13, 0x19, 0xfb, 0x28, 0x69, 0x78, 0xff, 0xf3, 0xf4, 0xb4, 0x75, 0xa0, 0x52, 0xf7, 0xf6, 0xac}, 
{ 0xb5, 0x57, 0xa9, 0x50, 0x4a, 0xf4, 0xad, 0x12, 0x8d, 0xc0, 0xfc, 0x40, 0xa2, 0xe7, 0xfb, 0x96, 0xa6, 0x66, 0xad, 0xa6, 0x47, 0x62, 0x2f, 0x9a, 0x6b, 0x88, 0xc0, 0x8b, 0x50, 0x79, 0x41, 0x40}, 
{ 0x46, 0x7f, 0x14, 0x93, 0xcf, 0x5f, 0x3e, 0xe0, 0x96, 0x46, 0x58, 0xcf, 0x2a, 0xd8, 0x7c, 0xba, 0xfe, 0x7d, 0x62, 0x70, 0xc8, 0x45, 0xcf, 0x26, 0x06, 0x0a, 0x7f, 0x6e, 0xac, 0x0d, 0x6b, 0x6d}, 
{ 0xa1, 0xa1, 0x75, 0x36, 0x29, 0x67, 0xcf, 0x21, 0x0e, 0xfe, 0x03, 0x7b, 0x89, 0x44, 0x53, 0x88, 0x83, 0xec, 0x7a, 0xa0, 0x3f, 0xb6, 0xe6, 0x73, 0xcd, 0x45, 0x85, 0x3b, 0x3b, 0x56, 0xe2, 0x62}, 
{ 0x4c, 0xe0, 0xb6, 0x75, 0x9b, 0x21, 0x4c, 0x13, 0x65, 0x39, 0xd5, 0xf2, 0x59, 0xb4, 0xdf, 0x32, 0x13, 0x2c, 0x14, 0x33, 0x63, 0x6d, 0x1c, 0x4e, 0x69, 0xd3, 0xe0, 0xa8, 0x76, 0xab, 0xb7, 0xa8}, 
{ 0x13, 0x90, 0xab, 0x9c, 0x7b, 0xd9, 0xe9, 0x1b, 0x04, 0x82, 0x85, 0xd1, 0x40, 0x74, 0xce, 0x86, 0xfc, 0xbd, 0x3f, 0x24, 0xa2, 0xdf, 0x33, 0x4f, 0xe3, 0x30, 0xbc, 0x9b, 0x4e, 0xf6, 0x61, 0x67}, 
{ 0x90, 0x98, 0x7a, 0x8e, 0x58, 0x7f, 0xff, 0xb1, 0xc5, 0xd4, 0x23, 0xf9, 0xce, 0xc8, 0xd5, 0x05, 0xbf, 0xff, 0x93, 0x10, 0xad, 0x56, 0x4c, 0xe3, 0x7a, 0xdf, 0x1f, 0x6e, 0xec, 0x0b, 0x49, 0xb7}, 
{ 0xea, 0xd0, 0xc1, 0x7a, 0x85, 0x56, 0xda, 0x90, 0x58, 0x84, 0x31, 0xf2, 0xb1, 0xf4, 0x47, 0xa9, 0xfb, 0x62, 0x13, 0x0b, 0x39, 0x7e, 0x7e, 0xfd, 0xe8, 0x54, 0x4f, 0x00, 0x24, 0xad, 0x27, 0xef}, 
{ 0x09, 0x2d, 0x89, 0xc8, 0x22, 0xcd, 0x79, 0xf3, 0x8d, 0x22, 0xc4, 0x49, 0xfb, 0xd7, 0x8c, 0x25, 0x67, 0x4e, 0xe0, 0xea, 0x24, 0x9a, 0x94, 0xf5, 0x1b, 0xd1, 0xdc, 0x96, 0x6a, 0x03, 0x13, 0x41}, 
{ 0x89, 0x6d, 0x59, 0xdb, 0x38, 0x43, 0xa8, 0xa9, 0x9d, 0x5c, 0x10, 0xae, 0x67, 0xd3, 0x37, 0x9e, 0x45, 0x67, 0x90, 0x44, 0x74, 0xb9, 0x01, 0xa8, 0x3f, 0x63, 0x78, 0x47, 0xd7, 0xfd, 0xe3, 0x01}, 
{ 0x62, 0x4d, 0x4c, 0xc2, 0x9c, 0x46, 0xe7, 0x70, 0xb8, 0xe6, 0x79, 0xcd, 0x26, 0x84, 0xe7, 0xd8, 0xd0, 0xff, 0x7b, 0x33, 0xa9, 0x5c, 0x9c, 0x4e, 0x3e, 0x89, 0x4d, 0x77, 0x49, 0x2f, 0xe9, 0xf8}, 
{ 0x81, 0x45, 0x7a, 0x3c, 0x73, 0x9c, 0x89, 0x4d, 0x97, 0xaf, 0xce, 0xf9, 0x14, 0xa6, 0x33, 0xcf, 0x71, 0xcc, 0x2e, 0x96, 0xe3, 0x23, 0x4b, 0x9e, 0x04, 0xe7, 0x16, 0x08, 0xa7, 0xc3, 0x72, 0xd3}, 
{ 0xf7, 0x4b, 0xfa, 0x7f, 0xc5, 0x8d, 0x5c, 0xef, 0x0c, 0x67, 0xd9, 0x0f, 0x6a, 0x96, 0x8a, 0xfd, 0x8e, 0x0b, 0x65, 0xa3, 0xe6, 0xf0, 0x02, 0xa0, 0x56, 0xad, 0xe7, 0x53, 0xa1, 0x81, 0x28, 0xe2}, 
{ 0x54, 0x81, 0x43, 0x0e, 0x88, 0x4d, 0x6d, 0xdd, 0xdc, 0x29, 0x79, 0x94, 0x7d, 0x1f, 0x11, 0x67, 0xfe, 0x7b, 0xbd, 0x74, 0x90, 0x52, 0x57, 0x7c, 0x2f, 0xcb, 0xcd, 0xfd, 0x6c, 0xb4, 0xf7, 0x6e}, 
{ 0x60, 0xfc, 0x89, 0xc5, 0x99, 0xb3, 0x85, 0x01, 0xb9, 0x77, 0x5e, 0x00, 0xe2, 0xdc, 0x94, 0xb7, 0xb2, 0x24, 0xd2, 0x3c, 0xf8, 0xcc, 0x85, 0x5d, 0xab, 0x41, 0x07, 0x4d, 0x32, 0x79, 0xaa, 0xa6}, 
{ 0xd2, 0xbf, 0xce, 0x14, 0x42, 0xa1, 0xa1, 0x26, 0xca, 0x46, 0x49, 0x00, 0x1d, 0x90, 0x67, 0x79, 0x5a, 0x95, 0xac, 0xde, 0xba, 0x9d, 0x02, 0x51, 0xa4, 0x0b, 0x6e, 0xae, 0xb8, 0x52, 0xd1, 0xb2}, 
{ 0xd3, 0xa9, 0xf9, 0x72, 0x8e, 0xc1, 0x39, 0x6e, 0xd9, 0xc1, 0xa9, 0x04, 0xdf, 0xac, 0xbe, 0x50, 0x3e, 0xd4, 0x69, 0xfa, 0x90, 0xa3, 0xf7, 0xda, 0xe5, 0x63, 0x50, 0x7a, 0x4a, 0x5c, 0x9e, 0x86}, 
{ 0x61, 0xdf, 0x4b, 0xc4, 0x27, 0xd2, 0x45, 0x70, 0xb9, 0xc1, 0x9d, 0x61, 0x58, 0x75, 0xa3, 0xdc, 0xa9, 0x36, 0xad, 0xef, 0x62, 0x50, 0x6d, 0x6a, 0xda, 0xa6, 0x7a, 0x58, 0xd9, 0x40, 0x2a, 0x08}, 
{ 0x2a, 0x89, 0xee, 0xa9, 0x77, 0x26, 0x0c, 0xac, 0x2c, 0xcb, 0xc1, 0x26, 0x53, 0x98, 0xa3, 0x72, 0x45, 0xf1, 0x99, 0x55, 0x63, 0x8c, 0xca, 0x22, 0xa9, 0xf3, 0x6a, 0xb0, 0xda, 0xa2, 0xb5, 0xc3}, 
{ 0x49, 0xc4, 0xce, 0xf6, 0x9a, 0xc2, 0x0d, 0xab, 0x5d, 0x17, 0x1f, 0x09, 0x4e, 0x85, 0xd2, 0xe7, 0xfb, 0x3f, 0xac, 0xba, 0x29, 0xe5, 0xb8, 0xe3, 0x75, 0x33, 0x4e, 0x0b, 0x6a, 0x18, 0x0f, 0xe2}, 
{ 0x06, 0x68, 0x7d, 0x10, 0x78, 0xba, 0x09, 0x03, 0xa5, 0xee, 0xe9, 0xd4, 0xa6, 0x35, 0xff, 0x82, 0xb5, 0xd6, 0xb5, 0x76, 0x5e, 0x42, 0xdc, 0x7a, 0xc8, 0x97, 0xa6, 0xb9, 0x34, 0x29, 0x78, 0x3d}, 
{ 0x61, 0xa5, 0x57, 0xd8, 0x49, 0x0c, 0x51, 0xdd, 0x1a, 0x7c, 0x23, 0xce, 0x96, 0x52, 0xdf, 0x72, 0xa8, 0x13, 0x3f, 0x73, 0xad, 0xa6, 0x3d, 0xb3, 0x03, 0x6e, 0x43, 0x94, 0xee, 0x35, 0x2a, 0x7f}, 
{ 0xd9, 0xc8, 0x42, 0x8d, 0x0c, 0xd4, 0xe7, 0xa8, 0xa5, 0x0f, 0x9f, 0xe2, 0xae, 0x92, 0x04, 0x9f, 0x34, 0x50, 0xa1, 0xb9, 0x4a, 0x2d, 0x68, 0x96, 0x4f, 0x14, 0x7d, 0xf6, 0x29, 0x67, 0x7a, 0xf7}, 
{ 0x41, 0xe8, 0xa6, 0xed, 0x7f, 0xfd, 0x05, 0xbe, 0x92, 0x71, 0x07, 0xfb, 0x41, 0x35, 0xd1, 0xa4, 0x38, 0xb9, 0x54, 0x95, 0x94, 0x38, 0x5b, 0x39, 0x53, 0xae, 0xb2, 0x01, 0x3d, 0xb8, 0x6e, 0x57}, 
{ 0xf2, 0xfd, 0x3d, 0x7c, 0x75, 0x9b, 0x7e, 0x2e, 0xac, 0xb6, 0x38, 0xe7, 0x60, 0x39, 0xfb, 0x66, 0xd4, 0x81, 0x63, 0x0e, 0x21, 0x38, 0x03, 0xf7, 0x45, 0xb6, 0x48, 0x7a, 0xfd, 0x91, 0x59, 0x89}, 
{ 0x87, 0xf1, 0xd9, 0x3d, 0x7c, 0x5e, 0x09, 0x08, 0xa0, 0xf3, 0xcf, 0xf7, 0xe8, 0x6b, 0x30, 0xf5, 0x72, 0x7e, 0x8b, 0x67, 0x6a, 0xcc, 0x43, 0x51, 0x5f, 0x05, 0x3b, 0xa1, 0x71, 0xda, 0xe8, 0xf3}, 
{ 0xc4, 0x5b, 0x54, 0x23, 0xf0, 0x65, 0x32, 0x60, 0x73, 0x44, 0x9d, 0x5b, 0x88, 0x08, 0xe1, 0xad, 0xd6, 0x1f, 0x2e, 0xc1, 0xb9, 0x49, 0x64, 0xa3, 0x8d, 0xe3, 0xf0, 0x66, 0x6f, 0x2c, 0x9b, 0xaa}, 
{ 0xe8, 0x0f, 0x69, 0xcc, 0x31, 0x52, 0x85, 0x59, 0xe7, 0x27, 0x1e, 0x78, 0xc9, 0x2a, 0xab, 0x81, 0x28, 0x4c, 0x2d, 0x58, 0x49, 0xa2, 0x7e, 0x7f, 0xf3, 0xe8, 0x5d, 0x46, 0x25, 0x18, 0xbd, 0x75}, 
{ 0x49, 0x82, 0xde, 0xe1, 0x31, 0xf9, 0x30, 0x9f, 0x50, 0x6e, 0x57, 0xde, 0x98, 0x50, 0x3a, 0xde, 0x67, 0xe0, 0x4e, 0x81, 0x5a, 0xca, 0x19, 0xe5, 0xfe, 0x0c, 0x06, 0x96, 0xaf, 0x16, 0xea, 0x60}, 
{ 0xf2, 0xa2, 0xd3, 0xd3, 0x83, 0x55, 0x3c, 0x98, 0x7c, 0x5e, 0x8e, 0x1d, 0x25, 0x86, 0xfb, 0x41, 0x37, 0x3a, 0xba, 0x1d, 0xe3, 0xf2, 0x56, 0xb4, 0x70, 0x62, 0x2b, 0xf6, 0x24, 0xc3, 0xa9, 0xfd}, 
{ 0x54, 0x96, 0x7f, 0xab, 0xa6, 0x5f, 0xf8, 0x82, 0x86, 0xdf, 0xbc, 0x1f, 0x6c, 0xee, 0x0e, 0x84, 0x0a, 0x2a, 0x74, 0x7b, 0x61, 0x82, 0x2e, 0x7b, 0xd7, 0x21, 0x94, 0x08, 0x2b, 0x83, 0x95, 0xff}, 
{ 0x39, 0x24, 0x0c, 0xf8, 0x1d, 0x08, 0xb6, 0xbf, 0x2e, 0x6f, 0x29, 0x0d, 0x53, 0xf0, 0x5c, 0x10, 0x67, 0x50, 0x6e, 0x9d, 0x08, 0x01, 0xb6, 0x84, 0xc3, 0xc6, 0x2a, 0x22, 0xc4, 0x2b, 0x1a, 0xf5}, 
{ 0xe3, 0xbb, 0x7c, 0xb6, 0x3d, 0xf3, 0x56, 0x2a, 0x66, 0x59, 0x9d, 0xde, 0xbe, 0xe2, 0x40, 0xcd, 0x6d, 0xc4, 0xef, 0xb0, 0x4d, 0x21, 0x0b, 0xd1, 0x95, 0x6b, 0x8b, 0xff, 0x8e, 0xeb, 0xf0, 0x3a}, 
{ 0xba, 0x61, 0x73, 0xb6, 0xbd, 0xcc, 0xf1, 0x22, 0xe1, 0x0c, 0x3f, 0x08, 0xa0, 0x50, 0x3d, 0x38, 0x48, 0x95, 0xbc, 0x04, 0xeb, 0x29, 0x81, 0xa1, 0x7e, 0xbf, 0x21, 0x09, 0xfd, 0xa1, 0x20, 0x27}, 
{ 0x63, 0xb1, 0x34, 0xb9, 0xc0, 0xf7, 0x62, 0x5c, 0xe1, 0xb4, 0x7d, 0xe5, 0x44, 0x33, 0xef, 0xeb, 0x5b, 0xcd, 0x21, 0x37, 0x83, 0xde, 0x48, 0x90, 0xfa, 0x41, 0x63, 0xd0, 0xfc, 0xec, 0xff, 0x6e}, 
{ 0xc4, 0x27, 0x07, 0x32, 0x9a, 0x57, 0x15, 0x7e, 0xc8, 0x07, 0xec, 0xa0, 0x20, 0x3b, 0x3b, 0x66, 0x94, 0x3d, 0x14, 0x76, 0x2e, 0xdc, 0x5d, 0x96, 0x2c, 0x65, 0xff, 0x9f, 0x5f, 0x41, 0xd9, 0x1c}, 
{ 0xac, 0x66, 0xb9, 0x61, 0x11, 0xba, 0xae, 0x83, 0xae, 0xfe, 0x97, 0x25, 0x5f, 0xea, 0x94, 0x6c, 0x14, 0x7b, 0x1c, 0x72, 0x10, 0x2e, 0x04, 0x68, 0x13, 0x8a, 0x4d, 0x1a, 0x8c, 0x36, 0x62, 0x26}, 
{ 0x8f, 0xb6, 0x39, 0x0b, 0x55, 0x35, 0x79, 0xe6, 0x90, 0xd2, 0x42, 0x65, 0xe9, 0x98, 0xa4, 0x2e, 0x8f, 0x8e, 0x05, 0x35, 0x74, 0xd6, 0x50, 0xf5, 0x5d, 0x9f, 0x20, 0x78, 0xe4, 0x54, 0x28, 0x6e}, 
{ 0x1c, 0x08, 0x95, 0x11, 0xb5, 0x22, 0xc5, 0x65, 0x1b, 0x81, 0x31, 0xda, 0x44, 0x36, 0xb9, 0x55, 0x72, 0x2f, 0x5f, 0x7c, 0xbb, 0x78, 0x7c, 0x45, 0xc4, 0xaa, 0x32, 0xf3, 0x33, 0xb6, 0x0d, 0xcf}, 
{ 0x85, 0x45, 0x8f, 0xe8, 0xc2, 0x24, 0xba, 0x7e, 0x1a, 0xc3, 0x29, 0x6c, 0x09, 0x2e, 0xb3, 0x3f, 0x6a, 0x43, 0x88, 0x57, 0x94, 0xca, 0x97, 0x42, 0xd5, 0x09, 0x4a, 0xae, 0x96, 0x72, 0x9e, 0xc4}, 
{ 0xf3, 0x8b, 0x30, 0x2e, 0x16, 0x3c, 0xab, 0x1a, 0x87, 0x24, 0x9a, 0xf1, 0x6f, 0xc4, 0x83, 0x12, 0x2e, 0x44, 0x6e, 0xbb, 0x1c, 0xac, 0xfd, 0x05, 0xf0, 0xa8, 0x65, 0x0a, 0x3c, 0x7c, 0xbe, 0x7f}, 
{ 0xcd, 0x2c, 0x13, 0x10, 0x87, 0x30, 0xa5, 0xc8, 0xe9, 0x56, 0xa5, 0x68, 0x68, 0xa8, 0x55, 0xb4, 0x80, 0x54, 0xe8, 0x82, 0x10, 0x56, 0xf1, 0x82, 0x3f, 0xa3, 0x00, 0x0c, 0xbc, 0x94, 0x06, 0x1d}, 
{ 0x61, 0xf5, 0xa3, 0xfb, 0x52, 0x43, 0xac, 0x97, 0xed, 0x47, 0x39, 0x0f, 0x56, 0xa1, 0x8e, 0xdf, 0x59, 0x41, 0x5a, 0x27, 0x4f, 0x87, 0xe3, 0xbc, 0xa4, 0x47, 0x6a, 0x40, 0xe6, 0x17, 0xc0, 0x01}, 
{ 0xf8, 0x87, 0x68, 0x5c, 0x2c, 0x51, 0xc3, 0x0d, 0x5e, 0xa7, 0x60, 0xe5, 0xa5, 0x41, 0x78, 0x39, 0x2c, 0x6e, 0x5c, 0x44, 0xb0, 0xf7, 0xe6, 0xc8, 0x25, 0x77, 0xac, 0xcf, 0x82, 0x81, 0xd5, 0x99}, 
{ 0x05, 0xe4, 0x90, 0xaf, 0x8b, 0x39, 0x00, 0xd4, 0xed, 0x4a, 0xdb, 0x11, 0xf3, 0x43, 0xaa, 0xa6, 0xe6, 0x0b, 0xf0, 0x0e, 0xdc, 0xa1, 0xe6, 0xb3, 0xc8, 0x26, 0x2a, 0xbd, 0x3b, 0x39, 0xb9, 0xb1}, 
{ 0x19, 0x3f, 0xad, 0xad, 0xe2, 0xfc, 0x17, 0x16, 0xb9, 0x75, 0x45, 0x1d, 0xbd, 0xca, 0xc4, 0x3c, 0x30, 0xb8, 0x0e, 0x9e, 0xf8, 0x89, 0x20, 0x5d, 0x3a, 0x81, 0x01, 0x02, 0x32, 0x91, 0x92, 0xd7}, 
{ 0xba, 0x98, 0x2d, 0xf2, 0x08, 0x59, 0xe2, 0x03, 0x4e, 0x44, 0x15, 0x29, 0x01, 0xcc, 0x63, 0x10, 0xcb, 0x58, 0xc7, 0x3f, 0x4c, 0x57, 0x58, 0x43, 0x77, 0x25, 0xcf, 0x74, 0x04, 0x90, 0xe6, 0x69}, 
{ 0xcb, 0x89, 0x53, 0xe5, 0x09, 0x89, 0x07, 0x74, 0xaa, 0xf3, 0xdd, 0xff, 0x04, 0x50, 0x56, 0xef, 0x81, 0x4c, 0x5f, 0x88, 0xb1, 0xe6, 0x07, 0x0a, 0x39, 0x2a, 0x81, 0xc3, 0xd3, 0x4d, 0x6b, 0x1f}, 
{ 0xfb, 0x17, 0x46, 0xaf, 0x8b, 0x19, 0x08, 0xa9, 0xed, 0xa0, 0xa6, 0x5d, 0x97, 0x40, 0x71, 0x75, 0x35, 0xaf, 0xc1, 0xfb, 0xd6, 0x79, 0x65, 0xed, 0x65, 0xe2, 0xf4, 0xa3, 0xfe, 0x88, 0xd7, 0x7d}, 
{ 0x23, 0x6c, 0xc7, 0x40, 0x2f, 0xd0, 0xd1, 0x8c, 0x5d, 0x0d, 0xb3, 0xa8, 0x83, 0x27, 0xc5, 0xd4, 0xa7, 0xad, 0x68, 0x3e, 0xc1, 0x46, 0xcc, 0x66, 0x64, 0xd5, 0x5d, 0x92, 0x83, 0x2f, 0xa7, 0xf5}, 
{ 0xed, 0xdf, 0x09, 0x0d, 0x6e, 0x97, 0x0f, 0x43, 0x1f, 0xed, 0xd0, 0x79, 0x90, 0x4a, 0xae, 0x4f, 0xc9, 0xca, 0x9d, 0xd7, 0xf9, 0x54, 0x0d, 0x11, 0xf3, 0xaa, 0xb5, 0x20, 0xde, 0x57, 0xd2, 0xb2}, 
{ 0x62, 0x38, 0x79, 0x5c, 0x52, 0xce, 0x8b, 0x9d, 0x65, 0x25, 0xaa, 0xbc, 0x18, 0xdd, 0x0a, 0x3b, 0xe4, 0x9f, 0xed, 0x5b, 0xcf, 0x84, 0x9c, 0xc3, 0x7a, 0xd7, 0xb5, 0xbd, 0xec, 0x02, 0x15, 0x1f}, 
{ 0x3b, 0x04, 0xb1, 0xbe, 0xd9, 0x4c, 0x2b, 0x4b, 0xec, 0xc5, 0x2b, 0xce, 0xff, 0x23, 0xa8, 0xb2, 0x47, 0xaf, 0x9f, 0x77, 0x38, 0xf7, 0x9b, 0xa6, 0xc8, 0xca, 0x5e, 0xbf, 0x8d, 0x63, 0x2a, 0xcf}, 
{ 0xc3, 0x65, 0x71, 0x13, 0xd8, 0xda, 0x76, 0x2b, 0x58, 0xdf, 0x64, 0x28, 0x77, 0x42, 0x31, 0x5e, 0x49, 0x3f, 0xd8, 0x15, 0x76, 0x99, 0x41, 0xf5, 0x86, 0xf4, 0x38, 0x70, 0xa0, 0xce, 0xb7, 0x9e}, 
{ 0x2a, 0x36, 0x7b, 0x47, 0xda, 0x9f, 0x40, 0xd8, 0x68, 0x0f, 0xba, 0x8b, 0x16, 0x18, 0xd3, 0xc1, 0x28, 0x83, 0xf8, 0xb4, 0x0e, 0xdd, 0xbd, 0x49, 0x84, 0x79, 0xbe, 0x2c, 0xe5, 0xab, 0x4a, 0xd4}, 
{ 0xe3, 0xcd, 0x43, 0x17, 0x19, 0x82, 0x97, 0x23, 0xb2, 0x54, 0xcd, 0x39, 0x8d, 0xd4, 0x58, 0xfc, 0x32, 0x1c, 0xc7, 0xc1, 0xb3, 0xb8, 0xce, 0x0b, 0x29, 0xd9, 0x23, 0x9e, 0x48, 0x28, 0x8a, 0x3f}, 
{ 0x50, 0xc0, 0x2e, 0xf4, 0x2c, 0x3f, 0xf4, 0x62, 0xc2, 0x39, 0x2c, 0x9b, 0xb4, 0xf9, 0xd5, 0xc1, 0x5a, 0x05, 0x14, 0x2d, 0x55, 0x8c, 0x29, 0x91, 0xde, 0xe2, 0xb5, 0xd8, 0x38, 0xdc, 0x9d, 0x2b}, 
{ 0xdf, 0x10, 0xd6, 0xaa, 0x09, 0x59, 0xad, 0x3a, 0xdd, 0x93, 0x2a, 0xab, 0x20, 0xc8, 0x98, 0xe8, 0xd6, 0x02, 0x41, 0x9c, 0xc1, 0x53, 0xcb, 0x99, 0x78, 0x3e, 0x01, 0xb4, 0x49, 0x17, 0xe2, 0x15}, 
{ 0x5e, 0xc4, 0x55, 0xf0, 0x11, 0x99, 0x1e, 0xa4, 0x53, 0x8d, 0xa6, 0x89, 0xaa, 0x9a, 0x8b, 0xed, 0x16, 0x7d, 0x95, 0x52, 0x6c, 0x5d, 0x5c, 0x8e, 0x92, 0xce, 0xcf, 0x25, 0x93, 0x31, 0x58, 0x05}, 
{ 0xc7, 0x93, 0x1b, 0x5d, 0xbd, 0x7e, 0x67, 0x3a, 0x3f, 0x18, 0x8d, 0xf2, 0x2f, 0xc5, 0x80, 0x14, 0xc9, 0xa4, 0xa3, 0xcf, 0xb1, 0x11, 0xac, 0xfa, 0x19, 0x08, 0x8f, 0x17, 0xd2, 0xbc, 0x02, 0x19}, 
{ 0x79, 0x3f, 0xae, 0x7a, 0xf0, 0x16, 0x42, 0x45, 0x44, 0xc0, 0x75, 0x7f, 0x3b, 0xb8, 0xb6, 0x00, 0x16, 0x88, 0x8d, 0x8e, 0xe4, 0x00, 0x31, 0x87, 0xad, 0x8b, 0xc6, 0x8c, 0xe0, 0x31, 0xd6, 0x16}, 
{ 0xe0, 0x3d, 0x7a, 0x8d, 0x19, 0xb3, 0x21, 0x9a, 0x65, 0xc5, 0xb1, 0x29, 0xf5, 0xf7, 0xad, 0x5d, 0x08, 0x66, 0x6f, 0xf5, 0x2d, 0xbd, 0x25, 0xf9, 0x21, 0x0c, 0xd0, 0x42, 0x97, 0x3f, 0x33, 0x3b}, 
{ 0x71, 0x3f, 0x9f, 0xa7, 0x97, 0xf9, 0x86, 0xcc, 0xf5, 0xb9, 0xb6, 0xe8, 0xc7, 0x1a, 0x0e, 0x10, 0xf9, 0x94, 0x39, 0xee, 0x87, 0x52, 0xbc, 0xf9, 0xe0, 0xd9, 0x8d, 0x04, 0xc4, 0x4f, 0xca, 0xa4}, 
{ 0xf9, 0x93, 0x75, 0x40, 0x69, 0x8b, 0xe4, 0x90, 0x6d, 0x09, 0x52, 0xde, 0x13, 0x45, 0x51, 0x20, 0x48, 0x4e, 0x8d, 0x27, 0x58, 0xa0, 0x92, 0x83, 0x9a, 0x67, 0xc3, 0x98, 0x6d, 0x98, 0xa4, 0x3b}, 
{ 0x6e, 0xbc, 0xa3, 0x3e, 0xf4, 0x86, 0xd1, 0x72, 0xbd, 0x15, 0xdd, 0xdf, 0x6c, 0x80, 0xc0, 0x13, 0xe2, 0x0f, 0xd0, 0xd5, 0x65, 0x07, 0x0c, 0x45, 0x02, 0x38, 0x99, 0xbb, 0x9e, 0xa6, 0xa3, 0xf6}, 
{ 0xa5, 0xcf, 0xb9, 0xd0, 0x8a, 0x19, 0x67, 0xc5, 0xc9, 0x68, 0xad, 0xd0, 0xf5, 0xe0, 0xc2, 0xa7, 0x51, 0x68, 0x2f, 0x28, 0x43, 0xd0, 0xc4, 0xf4, 0x59, 0x06, 0xb4, 0x7b, 0x84, 0xa9, 0xd6, 0xc8}, 
{ 0x6b, 0xae, 0x6f, 0x17, 0x2a, 0xe5, 0x29, 0x7f, 0xa7, 0x45, 0x09, 0xd7, 0x32, 0x8f, 0x6d, 0xe2, 0x76, 0x9f, 0x45, 0xe1, 0x75, 0x27, 0xd4, 0x50, 0x87, 0x0d, 0x95, 0x41, 0x15, 0x8c, 0x91, 0x76}, 
{ 0x50, 0x7c, 0x65, 0xe0, 0x3b, 0x7d, 0xe2, 0xd6, 0xe5, 0xbf, 0x7d, 0x98, 0x51, 0xa2, 0xc9, 0x74, 0x19, 0x1f, 0x20, 0x80, 0xe9, 0x89, 0x52, 0x3d, 0xba, 0xec, 0xe7, 0x11, 0x78, 0x91, 0x40, 0x0f}, 
{ 0xab, 0x05, 0xd3, 0xe2, 0x13, 0x3a, 0xf6, 0xf3, 0x97, 0x1c, 0xea, 0x09, 0x3b, 0x4a, 0xe4, 0x2d, 0xef, 0x2d, 0x96, 0x25, 0xc7, 0xb9, 0xe3, 0xbb, 0x72, 0x49, 0x43, 0x92, 0x36, 0xb0, 0xdf, 0x30}, 
{ 0x39, 0x50, 0x6e, 0x1c, 0x3f, 0xc0, 0x13, 0xb7, 0xf2, 0xe9, 0x7f, 0x66, 0x3b, 0x17, 0xd5, 0xf8, 0x82, 0x0a, 0xe7, 0x95, 0x52, 0xd2, 0x7a, 0xdd, 0x62, 0x5b, 0x6a, 0x5c, 0xad, 0x0e, 0xa2, 0x60}, 
{ 0x5c, 0x39, 0x32, 0x44, 0x4d, 0xf8, 0x5d, 0x1d, 0x08, 0xb0, 0x36, 0x97, 0xab, 0xc4, 0x49, 0xc0, 0x52, 0x2f, 0x53, 0xd8, 0x31, 0xfd, 0xba, 0x2c, 0x91, 0xe3, 0x5b, 0x0b, 0xea, 0xe1, 0x11, 0x88}, 
{ 0xe9, 0x0d, 0x87, 0x4d, 0x5a, 0x24, 0x10, 0x0f, 0x7c, 0xf8, 0xc3, 0x7c, 0x7f, 0x51, 0x0f, 0xc9, 0xbe, 0x9a, 0xde, 0xc8, 0x2d, 0x32, 0x00, 0x86, 0xc6, 0x1f, 0xaa, 0x71, 0xa5, 0xa4, 0x88, 0x6f}, 
{ 0xf4, 0x4a, 0xaa, 0x57, 0x20, 0x92, 0xaf, 0x6a, 0x3e, 0x0e, 0x28, 0xc4, 0x90, 0xe3, 0x64, 0xf5, 0x1b, 0x2d, 0x1a, 0x84, 0x33, 0xec, 0x72, 0xb5, 0x94, 0x7c, 0x76, 0x90, 0xd4, 0x7e, 0x70, 0x6f}, 
{ 0xf2, 0x74, 0xd6, 0x09, 0x8b, 0x1b, 0x8e, 0xcb, 0x14, 0x0c, 0x30, 0x92, 0x40, 0xd1, 0x1c, 0x22, 0xcf, 0x85, 0xe7, 0x44, 0x09, 0xdb, 0x9e, 0xfe, 0xcd, 0xfe, 0x7f, 0xd6, 0xd7, 0xb2, 0x42, 0x7b}, 
{ 0xc8, 0x73, 0xc8, 0xc1, 0x9b, 0x0a, 0x08, 0x5f, 0x48, 0x51, 0x42, 0xe3, 0x95, 0xaf, 0x3f, 0x5a, 0x12, 0xb2, 0xd9, 0xad, 0x34, 0x0d, 0x0e, 0x35, 0xd1, 0x57, 0xff, 0x74, 0xe1, 0x47, 0xdb, 0x1f}, 
{ 0x3b, 0x35, 0xfe, 0x64, 0x2c, 0xba, 0x04, 0x82, 0xa3, 0xa8, 0xd7, 0x46, 0x21, 0x23, 0xb8, 0xf9, 0x3c, 0x44, 0xcc, 0xff, 0xb0, 0x4e, 0x6c, 0x1c, 0x97, 0x6f, 0x60, 0x7d, 0x11, 0x96, 0x1f, 0xaf}, 
{ 0x05, 0xfb, 0x7d, 0x6f, 0x85, 0xa9, 0xd7, 0x7e, 0x6c, 0xaf, 0x1d, 0xef, 0xaf, 0x37, 0xae, 0xc3, 0xbf, 0x74, 0xe3, 0xa2, 0xdc, 0xea, 0x2b, 0x33, 0x6b, 0xa8, 0x0d, 0x6d, 0x9e, 0x59, 0x5b, 0xef}, 
{ 0xee, 0x4a, 0xfc, 0xb8, 0xf9, 0xf4, 0xeb, 0xb0, 0x1e, 0x1d, 0xd0, 0xe5, 0x71, 0x08, 0xc8, 0x27, 0xb4, 0x1d, 0x83, 0xe7, 0x13, 0x28, 0x52, 0xe7, 0x63, 0x24, 0x95, 0x3a, 0x90, 0x0b, 0x2d, 0x09}, 
{ 0x28, 0x56, 0x80, 0xcb, 0x73, 0x2d, 0x97, 0x7a, 0x2e, 0xe9, 0xd0, 0x74, 0x1b, 0x93, 0x8b, 0xa9, 0x8c, 0xa7, 0x3b, 0xc8, 0x63, 0x18, 0x14, 0x20, 0xde, 0x4f, 0x50, 0x6e, 0xf4, 0xf7, 0xf5, 0x69}, 
{ 0x43, 0x0c, 0xcf, 0x7a, 0x34, 0x9b, 0xf3, 0xc5, 0x3b, 0x82, 0x62, 0xe5, 0xeb, 0x07, 0x4d, 0xd8, 0xd0, 0x82, 0xe3, 0xbd, 0x3b, 0xd7, 0x21, 0xc9, 0xdc, 0xae, 0x1f, 0x50, 0xc2, 0xe5, 0xaa, 0x55}, 
{ 0x9f, 0xf3, 0x30, 0x65, 0x90, 0x54, 0xb1, 0x86, 0xdf, 0x4a, 0x3d, 0x76, 0xb6, 0x32, 0xe2, 0xcc, 0x23, 0x67, 0xe9, 0x7c, 0xa9, 0xf9, 0x45, 0x1e, 0x59, 0x01, 0xc4, 0xf1, 0x95, 0x4d, 0x7a, 0xfb}, 
{ 0x5d, 0xb0, 0xc4, 0xd4, 0x4c, 0x01, 0x15, 0xc4, 0x37, 0x9f, 0x29, 0x7d, 0xb2, 0x4f, 0x62, 0x99, 0x76, 0xaf, 0x4a, 0x9c, 0xbe, 0xd1, 0xd4, 0x94, 0x49, 0x62, 0xed, 0x3d, 0x80, 0x7b, 0xb4, 0xef}, 
{ 0xf3, 0xff, 0xb4, 0xd5, 0xb1, 0x31, 0x4d, 0x97, 0x73, 0x88, 0xde, 0x94, 0xba, 0x9a, 0xca, 0x10, 0xe1, 0x9a, 0x8e, 0xf4, 0x7a, 0x38, 0x5c, 0xc0, 0xab, 0x90, 0xfd, 0x69, 0x21, 0xc7, 0x59, 0xfc}, 
{ 0x11, 0x63, 0xa0, 0x65, 0x30, 0x54, 0x98, 0xdc, 0xf4, 0x8a, 0x9b, 0x5a, 0xb9, 0x3f, 0xa5, 0xb3, 0xaa, 0x6e, 0xe6, 0x79, 0xe0, 0xd7, 0x2c, 0x12, 0xda, 0x17, 0x7f, 0x11, 0xca, 0x6c, 0xc2, 0xe0}, 
{ 0xf2, 0x5e, 0xd5, 0xd9, 0x52, 0xce, 0x06, 0x38, 0x18, 0xbf, 0xe3, 0xec, 0xc7, 0xaa, 0xda, 0xe6, 0x07, 0xf1, 0x7c, 0x2f, 0xbe, 0xca, 0x03, 0xd4, 0x60, 0x38, 0x60, 0xa2, 0x29, 0x19, 0xcc, 0x22}, 
{ 0x88, 0x50, 0x74, 0x88, 0x82, 0xea, 0xb8, 0x82, 0x42, 0x3d, 0x60, 0x41, 0xf4, 0xe5, 0xd8, 0x5d, 0x37, 0xe3, 0x94, 0x22, 0xc2, 0x84, 0x91, 0x33, 0xec, 0x89, 0xd8, 0xc7, 0xfb, 0xa5, 0x47, 0xbb}, 
{ 0x81, 0x7b, 0x19, 0xec, 0x11, 0xaa, 0x92, 0xa1, 0x7a, 0xd0, 0x7d, 0xd2, 0x31, 0xb7, 0xb3, 0x89, 0xeb, 0x7c, 0xa8, 0xd2, 0xfe, 0x49, 0x74, 0xd3, 0xdc, 0xd8, 0xad, 0xe8, 0x62, 0x69, 0x45, 0x4b}, 
{ 0x5e, 0x58, 0x16, 0xf7, 0x7d, 0xff, 0x6c, 0xf8, 0x6f, 0x79, 0x08, 0xb6, 0x96, 0xef, 0x6f, 0x69, 0x18, 0x33, 0xb9, 0xbd, 0xcd, 0x69, 0xd6, 0x46, 0xb5, 0xad, 0xa6, 0xe9, 0x4f, 0xcc, 0x0d, 0xc7}, 
{ 0xbc, 0x47, 0x66, 0x4c, 0xdd, 0xe3, 0xd0, 0xe2, 0xcd, 0xed, 0x3e, 0x01, 0x47, 0x30, 0xfe, 0x09, 0x72, 0x24, 0x70, 0xce, 0xcc, 0x42, 0x64, 0x67, 0xb1, 0xd8, 0xb9, 0x93, 0x72, 0x51, 0xd3, 0x53}, 
{ 0x43, 0x9c, 0x69, 0xe8, 0x63, 0x92, 0xc4, 0x91, 0x4c, 0xda, 0x8e, 0x9a, 0xcb, 0x28, 0x9c, 0xeb, 0x66, 0xa2, 0xfc, 0x59, 0xa2, 0xb1, 0x9a, 0x6d, 0xb5, 0x89, 0x43, 0x75, 0x70, 0xc1, 0x05, 0xe4}, 
{ 0x3f, 0xcd, 0xe0, 0xfc, 0x67, 0xb6, 0x00, 0x9d, 0xde, 0x61, 0xcf, 0xbf, 0x17, 0x92, 0x69, 0x7b, 0xaa, 0x92, 0x3a, 0xc6, 0x49, 0x3e, 0xa1, 0x89, 0x9f, 0x42, 0x6c, 0xe5, 0x66, 0xf2, 0x95, 0x1b}, 
{ 0x1f, 0xaa, 0xa5, 0x86, 0xe1, 0x73, 0xab, 0xdc, 0x54, 0xc3, 0x51, 0xe7, 0xfd, 0x70, 0x16, 0x3e, 0x57, 0xc8, 0xfb, 0xff, 0xb3, 0x5a, 0x39, 0xa9, 0x9b, 0x08, 0xbd, 0xd5, 0x96, 0xe2, 0xbd, 0x90}, 
{ 0x52, 0x5c, 0xab, 0x2f, 0xfa, 0xb7, 0xd9, 0xe4, 0x8a, 0xf6, 0x0d, 0xdc, 0x10, 0x8e, 0x2c, 0xd7, 0x05, 0x49, 0x8e, 0xba, 0x95, 0x6c, 0x05, 0x76, 0x52, 0x7b, 0xc0, 0x6b, 0x69, 0xd3, 0xc6, 0xc3}, 
{ 0x45, 0x4d, 0x18, 0x4a, 0x78, 0x74, 0x80, 0xa8, 0x1c, 0xb7, 0x57, 0x08, 0xb4, 0x72, 0x62, 0xb8, 0x35, 0xf8, 0x04, 0x65, 0xca, 0x2b, 0xea, 0x54, 0x87, 0x62, 0x79, 0xcb, 0x60, 0x38, 0x2b, 0xbc}, 
{ 0x99, 0xcc, 0xcc, 0x00, 0x4b, 0xef, 0x1a, 0x29, 0x8b, 0x07, 0x05, 0xbd, 0xc1, 0x61, 0x99, 0x9a, 0x77, 0xb9, 0xee, 0x8a, 0xb8, 0x46, 0x5b, 0xff, 0xf8, 0x4c, 0xee, 0x28, 0x7c, 0x5d, 0x5d, 0x24}, 
{ 0xb9, 0x5e, 0x68, 0xb0, 0x41, 0x47, 0xc8, 0x52, 0x0d, 0x68, 0xe5, 0xdd, 0xaf, 0xf0, 0xb1, 0xc9, 0x93, 0x4e, 0x15, 0x91, 0xe4, 0xc7, 0x67, 0xd4, 0x76, 0xd9, 0xa4, 0xb1, 0x8d, 0x58, 0x4e, 0x51}, 
{ 0x87, 0xfe, 0xec, 0xc2, 0xb2, 0xfb, 0x12, 0x45, 0xce, 0x21, 0xba, 0x7b, 0x2f, 0x37, 0x82, 0xcd, 0x6c, 0x48, 0x97, 0xa5, 0x69, 0x75, 0xe6, 0x5b, 0xda, 0x3f, 0xd3, 0x1e, 0xac, 0xb4, 0xc0, 0xbe}, 
{ 0x01, 0xfa, 0x61, 0xee, 0xbd, 0x04, 0x90, 0x76, 0x2e, 0xc5, 0x3f, 0x59, 0x43, 0x82, 0x9d, 0xc3, 0x0b, 0xed, 0xfb, 0x01, 0x60, 0x9c, 0xde, 0x9e, 0x20, 0xed, 0xf5, 0xaa, 0x56, 0x0d, 0x4a, 0x58}, 
{ 0x2e, 0x90, 0xa0, 0x83, 0xf4, 0x5e, 0x5a, 0x2e, 0xc0, 0xfe, 0x05, 0x99, 0xd5, 0x1b, 0x7e, 0x3f, 0x8b, 0x79, 0xae, 0x4a, 0x94, 0xaf, 0x87, 0xac, 0xb5, 0xee, 0xb1, 0xf1, 0xd1, 0x60, 0x38, 0xa4}, 
{ 0xe4, 0x24, 0xd7, 0xcc, 0x9a, 0xfd, 0x00, 0xa7, 0x73, 0x7e, 0x67, 0xa0, 0x5d, 0x09, 0x72, 0x32, 0x6f, 0xe5, 0xe7, 0xd0, 0x9d, 0xb4, 0x74, 0x05, 0xd3, 0xbe, 0xdc, 0x90, 0xfc, 0xbc, 0x93, 0x2d}, 
{ 0xff, 0xd5, 0x49, 0xae, 0xc9, 0x53, 0x9c, 0x04, 0xe7, 0x7f, 0x3d, 0x85, 0x5a, 0x40, 0xf6, 0x7d, 0x71, 0x39, 0x37, 0x3e, 0xde, 0x15, 0xc9, 0x37, 0x31, 0x1a, 0xa9, 0x64, 0x18, 0xb5, 0x34, 0xf0}, 
{ 0x37, 0xb3, 0x23, 0x31, 0x14, 0x67, 0x36, 0x5a, 0x9c, 0x68, 0xf5, 0xbb, 0xa7, 0xa5, 0x38, 0xfc, 0xe1, 0x89, 0x3d, 0xe7, 0x0f, 0xff, 0xf7, 0xc1, 0xb4, 0x3f, 0x7f, 0x66, 0x27, 0xb3, 0xec, 0x9c}, 
{ 0x99, 0xbb, 0x32, 0x56, 0x4d, 0xb6, 0x46, 0xcd, 0x20, 0x3c, 0x4f, 0xe1, 0x07, 0xbd, 0x2a, 0x26, 0x9d, 0xa0, 0x84, 0x20, 0xa9, 0xca, 0xb4, 0x83, 0x06, 0xf3, 0xbc, 0x8d, 0xf2, 0xbb, 0x1c, 0x0a}, 
{ 0x48, 0xf9, 0x70, 0xc9, 0xec, 0x41, 0x11, 0xd3, 0x09, 0x9b, 0x30, 0x48, 0x10, 0x10, 0x0d, 0x8e, 0xc5, 0x96, 0x83, 0xc2, 0x84, 0x46, 0x93, 0x3a, 0x38, 0x81, 0xaf, 0x64, 0x5f, 0x9f, 0x6c, 0xce}, 
{ 0x6c, 0xfc, 0x45, 0x69, 0xa9, 0x7b, 0x33, 0xd1, 0xa3, 0x98, 0x4d, 0xb8, 0x90, 0x49, 0xa2, 0x93, 0x71, 0xa7, 0x73, 0x70, 0x77, 0xd1, 0xf4, 0xad, 0xc2, 0x3e, 0xc5, 0xa0, 0xa5, 0x8c, 0x8a, 0x50}, 
{ 0x34, 0x17, 0x7c, 0x8a, 0x67, 0x55, 0x8c, 0xa1, 0x86, 0xd9, 0x16, 0xb5, 0x6e, 0xa4, 0x4e, 0xf6, 0x22, 0x3a, 0x74, 0x15, 0xeb, 0x8c, 0x1b, 0x89, 0x0f, 0x77, 0x73, 0xcb, 0xec, 0x00, 0x78, 0xc0}, 
{ 0x20, 0xdc, 0x3a, 0x01, 0x7e, 0x6b, 0x3e, 0x61, 0x4a, 0x21, 0xd0, 0xa2, 0xb9, 0x41, 0x1d, 0x1d, 0x96, 0x5a, 0xb4, 0x58, 0x32, 0x2f, 0xdc, 0xb2, 0xf8, 0xe9, 0x96, 0xc9, 0x37, 0x04, 0x05, 0x56}, 
{ 0x2b, 0xd0, 0x3e, 0xec, 0x65, 0x09, 0xd5, 0xf1, 0x08, 0x59, 0x14, 0x29, 0x6f, 0x7c, 0xee, 0xf0, 0x0d, 0x18, 0xf0, 0x9a, 0x53, 0x78, 0x88, 0xa1, 0x14, 0x3a, 0x57, 0xf2, 0x08, 0x04, 0xd0, 0x10}, 
{ 0x65, 0x68, 0x1a, 0xc6, 0xea, 0x84, 0xde, 0x14, 0xa5, 0x5d, 0xb1, 0x93, 0xd9, 0x96, 0x6e, 0xf6, 0x3d, 0xe7, 0x5e, 0xe7, 0xad, 0x2c, 0x63, 0xc7, 0x11, 0x03, 0x19, 0xa9, 0x5b, 0x6c, 0x05, 0x46}, 
{ 0x1a, 0xed, 0xda, 0x80, 0xc5, 0x24, 0x7e, 0x06, 0x6e, 0xcd, 0x2e, 0xb8, 0x9a, 0x47, 0x6d, 0x4e, 0xbd, 0x77, 0xbd, 0x34, 0xb8, 0x07, 0xe3, 0x12, 0xa2, 0x1c, 0x06, 0xe5, 0xc3, 0xd1, 0x61, 0xcf}, 
{ 0x15, 0x64, 0xf8, 0x9c, 0xef, 0x16, 0x9c, 0x28, 0x61, 0xe2, 0x9c, 0x8f, 0x12, 0xd8, 0xb8, 0x77, 0x84, 0x4d, 0x1c, 0x31, 0x2e, 0x6a, 0xd3, 0x57, 0x30, 0xa4, 0xa0, 0x0c, 0xd1, 0x2b, 0xd5, 0xee}, 
{ 0x0c, 0x07, 0x86, 0x90, 0x55, 0x78, 0x83, 0x0b, 0x96, 0x02, 0x0e, 0x68, 0xa0, 0xaa, 0x32, 0x1e, 0x87, 0x59, 0x1f, 0x65, 0x9b, 0x38, 0x58, 0x33, 0x94, 0xea, 0x53, 0xdf, 0x25, 0x59, 0xef, 0x28}, 
{ 0xef, 0xe8, 0x28, 0x6d, 0x6b, 0x0e, 0xfd, 0x42, 0xd2, 0x57, 0xae, 0x6b, 0xde, 0x3e, 0x23, 0x6c, 0xc0, 0xe2, 0x66, 0x77, 0xd2, 0x20, 0x88, 0x7e, 0x4d, 0x9d, 0x6c, 0xf0, 0x95, 0xbc, 0x19, 0x64}, 
{ 0xbb, 0xfd, 0x07, 0x87, 0xb5, 0xae, 0x48, 0xf1, 0x4e, 0xf9, 0xb8, 0x4b, 0x1d, 0xee, 0x73, 0xd5, 0x89, 0xee, 0x7c, 0xa1, 0x50, 0xdc, 0xc6, 0xf3, 0x2e, 0xc3, 0xa9, 0x68, 0x4f, 0xdb, 0x8f, 0x08}, 
{ 0xa1, 0xa4, 0x95, 0x49, 0x85, 0x68, 0x25, 0xf9, 0x8c, 0x9e, 0x9b, 0xa0, 0xfc, 0xdb, 0xc3, 0x26, 0x2a, 0x06, 0x71, 0xe2, 0xb3, 0xc1, 0x68, 0x97, 0xcc, 0xa9, 0x66, 0x77, 0xc9, 0xb5, 0x9f, 0x77}, 
{ 0x9c, 0x2c, 0x40, 0xdb, 0x6f, 0xb3, 0xec, 0x1f, 0x06, 0x23, 0xe5, 0x15, 0x67, 0xc6, 0xcb, 0x7b, 0x00, 0x38, 0x4f, 0x74, 0x70, 0xa4, 0x78, 0x20, 0xed, 0x96, 0x16, 0x9b, 0x72, 0x24, 0x4c, 0x80}, 
{ 0xec, 0xb3, 0x5d, 0x16, 0xee, 0x4e, 0x53, 0x9d, 0x75, 0x1c, 0xbe, 0xf4, 0xb9, 0xfd, 0x1e, 0xa7, 0xc3, 0x11, 0x92, 0x78, 0x29, 0x44, 0x7a, 0x71, 0x43, 0xe5, 0x95, 0x02, 0x1f, 0xaa, 0x54, 0xc7}, 
{ 0x85, 0x63, 0xe4, 0xed, 0x07, 0x5f, 0x64, 0x30, 0x9f, 0x42, 0x49, 0xe0, 0xfe, 0x37, 0x8d, 0x58, 0x67, 0x9b, 0x22, 0x87, 0x5f, 0x6d, 0x1b, 0xf3, 0xe1, 0x11, 0xdf, 0xd9, 0xf7, 0x8e, 0xcf, 0x4f}, 
{ 0xef, 0x7c, 0x6f, 0x0a, 0x1c, 0x73, 0xcf, 0x19, 0x76, 0x3e, 0x26, 0x1a, 0x44, 0x4d, 0x4b, 0xf1, 0x27, 0x52, 0x19, 0x21, 0xa5, 0x70, 0x55, 0x6b, 0x0e, 0x96, 0x53, 0x31, 0x40, 0xb1, 0xc0, 0x3a}, 
{ 0x65, 0xca, 0x40, 0xaf, 0x3f, 0x1b, 0xad, 0xfd, 0x26, 0xc7, 0x3f, 0xc1, 0x41, 0x71, 0x63, 0xec, 0xd9, 0x4b, 0xeb, 0x47, 0x36, 0x96, 0x28, 0x25, 0xba, 0x5c, 0x17, 0xda, 0x20, 0x7c, 0x5e, 0x55}, 
{ 0x50, 0x52, 0x9b, 0x68, 0x19, 0x3a, 0x57, 0xdc, 0x63, 0x40, 0x3d, 0xad, 0x3a, 0xf7, 0x2e, 0xf1, 0x26, 0x95, 0x9c, 0xc3, 0xac, 0x3d, 0xc8, 0xb6, 0x30, 0x38, 0x96, 0xd3, 0x12, 0x9f, 0xb7, 0x24}, 
{ 0x24, 0x1e, 0xcc, 0xf5, 0xdb, 0xd6, 0x12, 0xa2, 0x23, 0x98, 0x8d, 0x3b, 0x37, 0x47, 0xc7, 0xed, 0x0f, 0x1c, 0x64, 0x6a, 0xcb, 0xf1, 0x9e, 0x6b, 0x0a, 0x14, 0x81, 0x94, 0x61, 0xc9, 0x58, 0x83}, 
{ 0x3d, 0x94, 0xb0, 0x56, 0xaa, 0xd1, 0x22, 0xfa, 0x3c, 0xe0, 0xd2, 0xf9, 0x14, 0xf6, 0x94, 0xfd, 0xb1, 0x95, 0xf3, 0xc3, 0xd5, 0x45, 0x73, 0x54, 0x64, 0x5b, 0x46, 0x79, 0xb2, 0xec, 0x15, 0x85}, 
{ 0xcb, 0xfa, 0xc2, 0x56, 0x57, 0xdc, 0x0c, 0xab, 0xa4, 0x98, 0x48, 0xba, 0xf6, 0xd7, 0x21, 0x2f, 0xbf, 0x8d, 0x5b, 0x91, 0xbc, 0x12, 0x3d, 0xa5, 0x05, 0x6d, 0x61, 0xe3, 0xb8, 0xd1, 0x8d, 0x7c}, 
{ 0x51, 0x59, 0xd2, 0x18, 0xba, 0x04, 0xa8, 0xd9, 0x91, 0x51, 0xaa, 0x58, 0x47, 0x75, 0xc8, 0x57, 0x11, 0x00, 0x6e, 0x9f, 0xc5, 0x1d, 0x11, 0x2f, 0x21, 0xac, 0x3d, 0xf8, 0x49, 0xbe, 0x2a, 0x1f}, 
{ 0x4a, 0xbb, 0xd1, 0xae, 0x27, 0xe1, 0x3f, 0x11, 0x8e, 0xb9, 0x1e, 0xc1, 0x56, 0x9c, 0x05, 0xa9, 0x8f, 0x47, 0x53, 0xca, 0xfc, 0x2a, 0xd9, 0xd8, 0x98, 0xb7, 0xd1, 0xa9, 0x25, 0xfd, 0x18, 0x66}, 
{ 0x4d, 0xdb, 0x9d, 0xbb, 0x5a, 0xef, 0x9b, 0xa2, 0xe8, 0x12, 0xce, 0x3a, 0x6e, 0x61, 0x9c, 0x13, 0x45, 0x38, 0x4e, 0x96, 0x10, 0x66, 0xaa, 0xde, 0xf0, 0x99, 0xe6, 0x07, 0xdb, 0xea, 0x8b, 0x56}, 
{ 0x81, 0x38, 0x85, 0x41, 0x73, 0x0e, 0xd3, 0xca, 0x9a, 0xd0, 0x57, 0x21, 0x40, 0xea, 0xc5, 0x95, 0x36, 0xc5, 0x24, 0x28, 0x26, 0x80, 0xbe, 0xf0, 0x30, 0x64, 0x30, 0xfa, 0x89, 0xd1, 0xe3, 0x0a}, 
{ 0x92, 0x64, 0xac, 0x8f, 0x97, 0x59, 0x0f, 0x12, 0x43, 0xf5, 0x89, 0xa2, 0x59, 0x2a, 0xb8, 0x0a, 0xab, 0x6f, 0x10, 0xb8, 0x72, 0x04, 0x7a, 0x34, 0xfc, 0xe0, 0x40, 0xe2, 0x1c, 0xa5, 0x5c, 0x33}, 
{ 0xbd, 0xf8, 0x58, 0xef, 0x99, 0x6c, 0xdd, 0xc9, 0x13, 0x8d, 0x0c, 0x14, 0x79, 0x46, 0xcc, 0x5c, 0x6b, 0x80, 0xff, 0x17, 0xd9, 0x0f, 0x3d, 0xd9, 0xec, 0x44, 0xdf, 0x1a, 0xba, 0xdf, 0x27, 0x12}, 
{ 0x5d, 0x90, 0x54, 0xb9, 0xd4, 0x13, 0xc5, 0x36, 0xdb, 0xa4, 0x2e, 0x51, 0x08, 0x1c, 0xb4, 0x0a, 0xa6, 0x42, 0x8b, 0x20, 0x0e, 0xa5, 0x15, 0xf7, 0x79, 0xa2, 0x79, 0xde, 0x0b, 0xea, 0x72, 0xdd}, 
{ 0xd9, 0xa8, 0x06, 0x0f, 0x12, 0xb6, 0xae, 0xac, 0x8c, 0x6d, 0x52, 0x83, 0x99, 0x0b, 0x86, 0x05, 0x7c, 0x65, 0x8a, 0x06, 0x05, 0x5b, 0x19, 0x56, 0x38, 0x89, 0x89, 0xd5, 0xcb, 0x47, 0x91, 0x7a}, 
{ 0xc3, 0x61, 0x5f, 0xcd, 0x71, 0xc0, 0x8a, 0x10, 0x5b, 0xee, 0x2a, 0x0b, 0xc7, 0xfa, 0x01, 0x05, 0xe3, 0xec, 0xc9, 0xac, 0xae, 0x29, 0x40, 0x25, 0x40, 0x92, 0x08, 0x88, 0x42, 0xf3, 0xac, 0x99}, 
{ 0x40, 0x2c, 0x9b, 0x37, 0x64, 0xf2, 0xfe, 0xca, 0x67, 0x79, 0x5f, 0x6d, 0xb4, 0xb4, 0x35, 0x5d, 0xfa, 0xdd, 0x8f, 0xb7, 0x1f, 0x27, 0x51, 0x0f, 0xd8, 0x92, 0xe4, 0x21, 0xa9, 0x7d, 0x2b, 0xfe}, 
{ 0x9c, 0x37, 0xe8, 0x26, 0xe5, 0xa9, 0xbf, 0x46, 0x9e, 0x91, 0x0e, 0xad, 0x57, 0x94, 0xf9, 0x0c, 0xb4, 0x28, 0x80, 0x59, 0x7a, 0xf0, 0x94, 0xa5, 0xc2, 0x53, 0x28, 0x51, 0xc9, 0x47, 0xea, 0xd5}, 
{ 0xe8, 0xe7, 0xf7, 0xf2, 0xe8, 0x13, 0x6a, 0x32, 0xe7, 0x95, 0x95, 0xa9, 0xf6, 0x6c, 0xf4, 0x85, 0x93, 0x67, 0xa0, 0xcc, 0x44, 0x96, 0xbd, 0xd3, 0x32, 0x3b, 0xca, 0x9d, 0xf0, 0x37, 0x43, 0xf3}, 
{ 0x4e, 0x6d, 0x4a, 0x18, 0x6a, 0x4a, 0x02, 0x1b, 0x94, 0x5f, 0x37, 0xfe, 0x9d, 0x2b, 0x3d, 0xba, 0x63, 0x05, 0x30, 0x90, 0xfb, 0x23, 0xd4, 0x5c, 0x39, 0xea, 0xc0, 0x61, 0x11, 0xbe, 0x89, 0x3d}, 
{ 0x72, 0x27, 0x9b, 0x20, 0x5b, 0xd8, 0x3d, 0xee, 0x8c, 0xe3, 0x0f, 0x2d, 0x46, 0xf4, 0xab, 0xfd, 0x38, 0x45, 0xa4, 0x96, 0x12, 0xc3, 0xf6, 0xc1, 0x2c, 0x29, 0xcd, 0x2f, 0x94, 0x1f, 0xd6, 0x95}, 
{ 0x3c, 0xb8, 0xca, 0x44, 0xc1, 0x70, 0x1b, 0x26, 0x8a, 0x45, 0xdf, 0x95, 0x02, 0xf4, 0x00, 0x3f, 0xf3, 0xe4, 0xe7, 0x7a, 0xd7, 0x4c, 0x5d, 0x24, 0x89, 0xea, 0x3c, 0x5a, 0xc1, 0x93, 0xe8, 0x61}, 
{ 0xf2, 0x98, 0x86, 0x3b, 0x64, 0x8a, 0x67, 0xb7, 0x38, 0xb3, 0x1f, 0x37, 0x7d, 0x89, 0x45, 0x55, 0xed, 0xd0, 0xc1, 0x0d, 0x9e, 0xd8, 0x80, 0xe9, 0x2f, 0x79, 0x92, 0xa0, 0x95, 0x52, 0xb5, 0x96}, 
{ 0xcb, 0xc6, 0x45, 0xda, 0xc7, 0xee, 0xe0, 0xbf, 0x52, 0x07, 0x50, 0xb4, 0xcd, 0x13, 0x99, 0xce, 0xa9, 0x31, 0x7a, 0x63, 0x87, 0xa7, 0xa0, 0x94, 0x80, 0x1c, 0x27, 0x1e, 0x77, 0x60, 0xec, 0x85}, 
{ 0x99, 0x38, 0xce, 0xea, 0x34, 0x08, 0x3e, 0x10, 0x2d, 0xe3, 0x9f, 0xaa, 0x76, 0xc0, 0xd2, 0x1a, 0xaa, 0x42, 0xb0, 0xd4, 0x7a, 0x3f, 0x3d, 0x5d, 0xc4, 0xd6, 0x8b, 0x07, 0x34, 0xf2, 0x6b, 0x66}, 
{ 0xfb, 0x7e, 0xbd, 0x67, 0x8c, 0x0e, 0x36, 0xf7, 0xca, 0x49, 0xa6, 0xce, 0xef, 0x79, 0xa7, 0xba, 0xde, 0xad, 0xc6, 0x58, 0x94, 0xb4, 0x4b, 0xfd, 0x00, 0x83, 0xe1, 0x2c, 0x6a, 0x0c, 0x51, 0xac}, 
{ 0x94, 0xdc, 0x4e, 0x40, 0xed, 0x69, 0x0f, 0xc8, 0x3b, 0xc9, 0x85, 0x2b, 0xf5, 0x51, 0xad, 0x9c, 0x22, 0x7e, 0x99, 0xf5, 0x33, 0xe6, 0x82, 0xe4, 0x5a, 0x0f, 0x75, 0xfc, 0x07, 0x08, 0x75, 0xb3}, 
{ 0x7f, 0xe5, 0x38, 0x64, 0x02, 0xbe, 0xfd, 0x18, 0xe4, 0x0a, 0xb6, 0xeb, 0xeb, 0xa4, 0x60, 0x40, 0x6a, 0xc4, 0x90, 0x87, 0xfb, 0xf5, 0x48, 0x57, 0xfd, 0x1d, 0xf1, 0x68, 0x70, 0xc5, 0xcb, 0x5b}, 
{ 0xda, 0xb3, 0xe4, 0xa3, 0xe9, 0x68, 0x6e, 0x15, 0x5e, 0x15, 0x59, 0x9c, 0xc3, 0xdc, 0x23, 0x05, 0x4b, 0x80, 0x15, 0x85, 0x45, 0x5d, 0x24, 0xca, 0xc0, 0xca, 0xc7, 0x0d, 0xb6, 0xdf, 0x8b, 0x98}, 
{ 0x32, 0x6d, 0xb9, 0xb3, 0xc0, 0x40, 0x4f, 0x94, 0x85, 0x67, 0x00, 0xd0, 0xb3, 0xa6, 0xe5, 0xc4, 0x8a, 0x17, 0x88, 0xb6, 0x0c, 0x50, 0xbb, 0x85, 0x6c, 0xbc, 0x2b, 0x98, 0x3e, 0x1e, 0x13, 0x56}, 
{ 0x80, 0xcc, 0x3a, 0x5c, 0xba, 0xb6, 0xd0, 0xdc, 0x13, 0x18, 0x8b, 0x88, 0xba, 0xd8, 0x82, 0xc3, 0xd0, 0xd6, 0x05, 0xf7, 0x22, 0x6a, 0x5b, 0xbe, 0xf8, 0xa8, 0xb9, 0x78, 0x4b, 0xeb, 0x42, 0x90}, 
{ 0x68, 0x69, 0xc6, 0x95, 0xf4, 0xf8, 0x86, 0x57, 0x7a, 0x4c, 0x7e, 0x32, 0x96, 0x54, 0x5d, 0xa1, 0xed, 0x83, 0xdb, 0x1b, 0xc7, 0x0c, 0x3a, 0x49, 0xa8, 0xd2, 0x60, 0x1e, 0xc1, 0x84, 0xfd, 0x3e}, 
{ 0x56, 0x8b, 0x23, 0x0c, 0x0f, 0xf4, 0x7c, 0x9e, 0x05, 0xb4, 0x85, 0x5a, 0xd4, 0xeb, 0x47, 0xc4, 0x6c, 0x53, 0x78, 0xa7, 0x3f, 0x00, 0xdf, 0xd2, 0x9e, 0xcb, 0x45, 0x69, 0xd0, 0x8a, 0x3a, 0x68}, 
{ 0x1c, 0x06, 0x4b, 0xd7, 0x43, 0x97, 0xd4, 0x2b, 0x7f, 0xc4, 0xbb, 0x0d, 0xac, 0x76, 0x49, 0xb6, 0xe3, 0xb4, 0x47, 0x71, 0xf4, 0x6a, 0x4d, 0x09, 0x3a, 0xf7, 0x7b, 0x22, 0xa8, 0xfe, 0x12, 0x8e}, 
{ 0xb6, 0xba, 0xb3, 0xb7, 0x3e, 0x0b, 0x4b, 0x99, 0x49, 0x4b, 0xa6, 0x70, 0xdc, 0xb6, 0xf4, 0x15, 0x06, 0x3e, 0x82, 0x2e, 0x4d, 0x84, 0x73, 0xb6, 0x8b, 0xa7, 0x45, 0x60, 0xd7, 0x00, 0x1c, 0xfa}, 
{ 0x32, 0x9c, 0xd7, 0xa3, 0xb8, 0x4a, 0xdb, 0xb9, 0x53, 0xf6, 0xc0, 0xa6, 0xd6, 0x4a, 0xc0, 0xbf, 0x8d, 0x7c, 0x24, 0x23, 0xe0, 0x5c, 0x88, 0xf7, 0x6a, 0xbd, 0x36, 0x33, 0x4b, 0xdf, 0x93, 0x06}, 
{ 0x7f, 0xa9, 0x2c, 0xc3, 0x21, 0xf9, 0x9a, 0xfe, 0xe0, 0x92, 0x9b, 0x3e, 0x01, 0x3a, 0x7a, 0x96, 0x52, 0x9b, 0xdb, 0xdd, 0x5e, 0x74, 0xd4, 0x5f, 0x40, 0x23, 0x5a, 0xee, 0x38, 0xbc, 0xe5, 0xf6}, 
{ 0xc9, 0x91, 0x02, 0xcb, 0x20, 0xc6, 0x10, 0xc9, 0x5b, 0xa6, 0x8b, 0x6b, 0x4f, 0x32, 0xa1, 0xe4, 0xe8, 0x1f, 0xac, 0xf6, 0x48, 0x60, 0xd2, 0x09, 0xa0, 0x42, 0xec, 0xc7, 0x1f, 0x82, 0x3c, 0xd1}, 
{ 0x95, 0x13, 0x2a, 0x0e, 0x38, 0xac, 0xf4, 0x77, 0x52, 0x38, 0x1e, 0x33, 0x0f, 0x94, 0x6f, 0x93, 0xbf, 0x14, 0x9a, 0xda, 0x30, 0x13, 0x76, 0x05, 0x11, 0x26, 0xec, 0xe1, 0xb9, 0x50, 0xe8, 0x91}, 
{ 0x1e, 0xb2, 0xcc, 0x06, 0xc3, 0xa4, 0x5f, 0x29, 0xfd, 0xb9, 0xa3, 0xa5, 0x16, 0x06, 0x2f, 0x82, 0xf1, 0x64, 0x49, 0x01, 0x4e, 0xb8, 0x81, 0xa4, 0x56, 0x8a, 0x5a, 0xda, 0x3d, 0x11, 0xfc, 0x00}, 
{ 0x2f, 0xe9, 0x8d, 0x3c, 0xcb, 0xf0, 0x7c, 0xf9, 0xb1, 0xd3, 0x27, 0xb4, 0xa4, 0x22, 0x5f, 0x64, 0x7a, 0xc9, 0xd4, 0x65, 0x37, 0xca, 0x1c, 0xc5, 0x05, 0x51, 0xf4, 0xd6, 0xab, 0xb5, 0xa6, 0xb8}, 
{ 0x5b, 0x8a, 0x8c, 0x44, 0xc0, 0xb6, 0x46, 0x97, 0x20, 0xa9, 0xe0, 0x10, 0xc3, 0xe9, 0x1c, 0xb9, 0x2d, 0x30, 0x43, 0x52, 0x53, 0x21, 0x57, 0xce, 0x01, 0xab, 0x2e, 0xed, 0x22, 0x9b, 0x63, 0x8a}, 
{ 0x01, 0x35, 0x89, 0x71, 0x78, 0xa0, 0x60, 0x22, 0x7c, 0x86, 0xd2, 0x82, 0x41, 0xf5, 0xa3, 0x1e, 0x20, 0x6f, 0xf7, 0xd6, 0xd7, 0xd3, 0x8d, 0x10, 0x43, 0x9e, 0x51, 0xa1, 0x56, 0x61, 0x9c, 0x9f}, 
{ 0x06, 0x90, 0xd6, 0xc6, 0x97, 0xe4, 0xed, 0x01, 0x6b, 0x94, 0xb9, 0x83, 0x8a, 0x90, 0x0b, 0xda, 0xbf, 0x1e, 0xb5, 0x1f, 0x9f, 0xf5, 0x3d, 0xcb, 0x9f, 0x7b, 0xe2, 0x68, 0x31, 0xa7, 0x50, 0xd2}, 
{ 0xcc, 0xfc, 0x03, 0x28, 0xea, 0xc5, 0xff, 0x5b, 0x95, 0xce, 0x7d, 0xb9, 0xf7, 0xf0, 0x2d, 0x7d, 0xc5, 0xe2, 0x98, 0xb0, 0x65, 0x74, 0xc7, 0xae, 0xeb, 0x57, 0x31, 0x00, 0x31, 0x23, 0x9f, 0x7e}, 
{ 0xdd, 0x17, 0x92, 0xe3, 0xae, 0xa9, 0x04, 0x5e, 0xe5, 0x22, 0xdb, 0x17, 0xe3, 0x74, 0xe4, 0x9c, 0xa2, 0x50, 0x6b, 0x05, 0x10, 0xea, 0xf0, 0xb7, 0x9b, 0x4c, 0x78, 0xc4, 0x86, 0xcb, 0xa5, 0x2a}, 
{ 0x3a, 0x32, 0x3e, 0x8c, 0x41, 0xb1, 0x58, 0x8f, 0xd1, 0x8c, 0xbf, 0x42, 0xcc, 0xa7, 0xf7, 0x59, 0x8a, 0x69, 0xa4, 0x8c, 0xb2, 0x30, 0x46, 0xe3, 0x88, 0x2f, 0x1a, 0x96, 0x4c, 0x88, 0xd5, 0xf8}, 
{ 0x95, 0xc7, 0x8d, 0x4a, 0xb5, 0xa7, 0x52, 0xbf, 0xcf, 0x20, 0xa2, 0x69, 0xb0, 0xf0, 0xc1, 0xde, 0x0b, 0x3c, 0x80, 0x2e, 0x4a, 0x00, 0xe8, 0xe9, 0xf9, 0xda, 0x8a, 0x26, 0x49, 0xdb, 0x95, 0xee}, 
{ 0xd2, 0xb8, 0x9c, 0x17, 0x89, 0x27, 0xa8, 0xdd, 0x5e, 0xb4, 0x93, 0x49, 0xc8, 0x64, 0x80, 0xfc, 0xce, 0x9e, 0x26, 0xda, 0x38, 0x2c, 0x72, 0xb5, 0x13, 0x5e, 0x46, 0x63, 0x8d, 0x1b, 0x9a, 0x10}, 
{ 0xe1, 0x14, 0xfc, 0x93, 0x51, 0x4f, 0x1a, 0x81, 0x3c, 0xbf, 0xff, 0x1d, 0x34, 0x6a, 0x0b, 0xea, 0xee, 0xab, 0x4d, 0xe6, 0x48, 0x04, 0xed, 0x97, 0x20, 0x16, 0xa1, 0xb2, 0x3a, 0xe3, 0xe7, 0xb1}, 
{ 0x01, 0x51, 0xb3, 0xac, 0xbe, 0x89, 0x7b, 0xbb, 0xc3, 0x8b, 0x9c, 0x44, 0xe0, 0x4a, 0xc7, 0x30, 0xf3, 0xba, 0xdc, 0x0d, 0xa3, 0xe5, 0x4b, 0x38, 0x67, 0x4c, 0x21, 0x70, 0xa2, 0x5a, 0x08, 0xa3}, 
{ 0x5d, 0x2a, 0x1d, 0x84, 0xcc, 0x90, 0x1f, 0x25, 0x27, 0xe2, 0x30, 0xa6, 0xb9, 0xf8, 0xe8, 0x22, 0x13, 0xe3, 0x05, 0x35, 0x7f, 0x76, 0xc5, 0x03, 0x1a, 0x7d, 0xec, 0x30, 0x8f, 0xdd, 0xda, 0xe2}, 
{ 0x74, 0x6f, 0xe3, 0x9c, 0x52, 0xb0, 0xec, 0x39, 0x9f, 0x04, 0x0c, 0x17, 0xb4, 0x80, 0x34, 0x0f, 0xb9, 0xdf, 0xee, 0xf9, 0xa1, 0x94, 0xdc, 0x10, 0x35, 0x7b, 0xd3, 0xd0, 0x87, 0x4d, 0x9f, 0x6e}, 
{ 0x4f, 0xf2, 0x46, 0xe3, 0xa4, 0x38, 0x17, 0xb6, 0xbf, 0x51, 0x00, 0xc6, 0xeb, 0x02, 0x65, 0xd5, 0xaf, 0x80, 0x00, 0x82, 0xeb, 0x3d, 0x5a, 0xbf, 0x8b, 0x3e, 0x95, 0xbd, 0x9d, 0x2a, 0xe6, 0x6f}, 
{ 0x0f, 0xf1, 0x92, 0x7b, 0x87, 0xa6, 0xaf, 0xc4, 0x9a, 0x92, 0x64, 0x9c, 0x21, 0xc8, 0x20, 0x53, 0x30, 0x07, 0xa3, 0xf9, 0xf7, 0xf0, 0x8b, 0x54, 0x78, 0xf0, 0xfb, 0x47, 0x0c, 0xea, 0x9b, 0x84}, 
{ 0x38, 0x92, 0x0a, 0x6f, 0x5a, 0x7b, 0x3a, 0x7a, 0x25, 0x3c, 0x6a, 0xb7, 0xff, 0x1f, 0xe0, 0x6b, 0x4f, 0xe1, 0x35, 0x2a, 0x14, 0x98, 0x47, 0xfd, 0xca, 0x54, 0x2c, 0xdb, 0x41, 0x26, 0x98, 0xf2}, 
{ 0xcb, 0x3f, 0xf6, 0x92, 0x9a, 0x5b, 0x19, 0x0b, 0xc8, 0xed, 0x2c, 0x81, 0xf0, 0x94, 0x6e, 0xe4, 0x3c, 0x81, 0x17, 0x2c, 0x1b, 0xba, 0xef, 0xb7, 0xc2, 0x03, 0x99, 0x6f, 0x36, 0x3b, 0x03, 0x62}, 
{ 0x3b, 0xa2, 0xe4, 0xa4, 0xb7, 0x3d, 0xfc, 0xee, 0x35, 0xb2, 0x11, 0x8c, 0x14, 0x35, 0xc2, 0x0a, 0xeb, 0xcd, 0xf1, 0xa8, 0x8a, 0x09, 0xb2, 0x5c, 0x48, 0x95, 0x71, 0x0e, 0x25, 0xff, 0xbc, 0x49}, 
{ 0x18, 0xfe, 0x77, 0x7d, 0x84, 0x2a, 0x4f, 0x3a, 0x8f, 0x9f, 0x2e, 0x9c, 0xc0, 0x1a, 0x8e, 0x8d, 0xe6, 0x1e, 0x12, 0x70, 0x15, 0x46, 0x65, 0x7d, 0xc2, 0xa4, 0xde, 0xd2, 0x8b, 0xff, 0x63, 0xb6}, 
{ 0xbf, 0x82, 0x2a, 0xbf, 0xd1, 0xee, 0x16, 0x2c, 0x36, 0x72, 0xef, 0x04, 0xd2, 0x69, 0xad, 0x96, 0xf7, 0xee, 0x4d, 0x8a, 0xc4, 0xc3, 0xd9, 0x5f, 0x10, 0x7b, 0x4d, 0xfa, 0xa9, 0xe1, 0xeb, 0xbb}, 
{ 0x10, 0xc4, 0xde, 0xf6, 0xfd, 0xb0, 0x4a, 0x51, 0x7e, 0x73, 0x49, 0x08, 0xf3, 0xd1, 0xa9, 0xae, 0x06, 0x9a, 0xfd, 0xbc, 0x39, 0xa0, 0xa2, 0x04, 0x5a, 0xa7, 0x6c, 0xc7, 0xb0, 0xd3, 0x5f, 0xfa}, 
{ 0x6d, 0xcd, 0x63, 0xc8, 0x28, 0xa1, 0x5e, 0x52, 0x54, 0x89, 0x91, 0x83, 0x0e, 0x03, 0xa5, 0x8f, 0x53, 0x00, 0xa0, 0x7e, 0x90, 0x52, 0x17, 0x69, 0x70, 0x58, 0x02, 0x92, 0x6b, 0x26, 0x32, 0x9e}, 
{ 0x8b, 0x6e, 0x8f, 0x44, 0xc3, 0x54, 0xae, 0x5f, 0x2c, 0xb1, 0x26, 0x13, 0x78, 0xd4, 0xe4, 0x08, 0x5d, 0x9a, 0xcf, 0xc6, 0x36, 0x49, 0x76, 0x74, 0x17, 0xd6, 0xfb, 0x7d, 0x1b, 0x87, 0xeb, 0xcb}, 
{ 0x0d, 0xf6, 0x8e, 0xa8, 0xe3, 0x50, 0xb1, 0x63, 0x1d, 0xe1, 0x74, 0x43, 0x9a, 0x27, 0xbd, 0x9d, 0xa4, 0x8d, 0x04, 0x9f, 0x96, 0xa8, 0x44, 0x71, 0x0f, 0x96, 0xd3, 0xf3, 0x89, 0x86, 0x42, 0x0b}, 
{ 0x82, 0x12, 0x26, 0x8d, 0x3f, 0xcd, 0xf5, 0x9c, 0x13, 0xb8, 0x3e, 0xbf, 0xed, 0x77, 0x24, 0x58, 0x83, 0xfc, 0xc0, 0x47, 0x25, 0x75, 0x96, 0xe1, 0xfa, 0xd2, 0x86, 0xb1, 0x16, 0x12, 0x6e, 0xb1}, 
{ 0x36, 0x74, 0xd6, 0x1e, 0xe7, 0xe8, 0x70, 0x5c, 0x9b, 0x84, 0xa7, 0x38, 0x3b, 0xec, 0x00, 0x45, 0x44, 0xe4, 0xda, 0x07, 0x5a, 0x34, 0xd5, 0xe8, 0x13, 0x50, 0x62, 0x38, 0xa5, 0x0e, 0xb5, 0x16}, 
{ 0x07, 0x70, 0xb7, 0x9a, 0xc9, 0x4f, 0xf9, 0xc3, 0x95, 0xe8, 0x37, 0x37, 0xdb, 0x19, 0x03, 0x99, 0xd6, 0x65, 0x64, 0xc9, 0xf1, 0xde, 0x1b, 0xb9, 0xa7, 0x5b, 0x6a, 0x55, 0xbc, 0xf2, 0x96, 0xf7}, 
{ 0x59, 0x61, 0x86, 0x17, 0x80, 0x17, 0x6f, 0xb3, 0xeb, 0xfc, 0x03, 0x13, 0x22, 0x8d, 0xbb, 0x41, 0xbb, 0xff, 0x35, 0x58, 0x4a, 0xf5, 0x19, 0x0a, 0x76, 0x82, 0x02, 0xa1, 0x7f, 0x24, 0x58, 0xb9}, 
{ 0x40, 0x55, 0xd4, 0x0d, 0x83, 0x60, 0x58, 0xa6, 0xcd, 0x30, 0xb3, 0x33, 0xda, 0x08, 0xef, 0x6c, 0xef, 0x26, 0x31, 0x3f, 0xc0, 0x40, 0xa9, 0xc4, 0xb6, 0x4f, 0x40, 0x1e, 0x44, 0xdf, 0x42, 0x6d}, 
{ 0xdc, 0xb5, 0x3e, 0xb5, 0xb0, 0x7c, 0x05, 0x13, 0x88, 0x11, 0x58, 0xcf, 0xe7, 0x79, 0xf4, 0x4a, 0xa3, 0xfa, 0x4b, 0xfb, 0xda, 0xed, 0xa1, 0xeb, 0x48, 0xbb, 0x38, 0x7a, 0x15, 0x29, 0xdb, 0x42}, 
{ 0x57, 0x1a, 0xdb, 0x13, 0xe6, 0x29, 0xa8, 0x20, 0xf0, 0xab, 0x2a, 0xd4, 0xe5, 0xfd, 0x91, 0x81, 0x08, 0x3d, 0x8d, 0x22, 0xbc, 0x54, 0x73, 0x80, 0x63, 0xd0, 0xac, 0xa2, 0x07, 0x46, 0xe1, 0xaa}
};

CModulus g_paramFieldP;			
CMpi g_paramA;				
CMpi g_paramB;				
CMpi g_PntGx;				
CMpi g_PntGy;
CModulus g_paramN;			
CMpi g_Inv2;	

CMpi *g_tablePntG = NULL; //[DCS_ECC_KEY_LENGTH*8][2];

//CMpi *g_tablePntPub; //[DCS_ECC_KEY_LENGTH*8][3];
//CMpi *g_tablePntRnd; //[16][3];		



void CEllipticCurveJacobian2Stand(CMpi *x, CMpi *y, CMpi *z)
{
	CMpi *t = NULL;
	CMpi *t2 = NULL;
	CMpl *lltmp = NULL;

	t = (CMpi *) malloc(sizeof(CMpi));
	t2 = (CMpi *) malloc(sizeof(CMpi));
	lltmp = (CMpl *)malloc(sizeof(CMpl));
	if(t == NULL || t2 == NULL || lltmp == NULL)
	{
		printf("malloc error in CEllipticCurveJacobian2Stand");
		return;
	}

	CMpiInit(t); CMpiInit(t2);
	CMplInit(lltmp);
	
	CModulusBinaryInverse(t,&g_paramFieldP,z);
	CMpiFastSquare(lltmp,t);

	CMplModAssign(t2, lltmp, &(g_paramFieldP.m_oModulus));
	CMpiMultiByCMpi(lltmp,x,t2);

	CMplModAssign(x,lltmp,&(g_paramFieldP.m_oModulus));
	CMpiMultiByCMpi(lltmp,t,t2);

	CMplModAssign(t2,lltmp,&(g_paramFieldP.m_oModulus));
	CMpiMultiByCMpi(lltmp,t2,y);
	CMplModAssign(y,lltmp,&(g_paramFieldP.m_oModulus));

	free(t);
	free(t2);
	free(lltmp);

	return;
}

//1 OK, 0 fail
int CEllipticCurveCheckPoint(CMpi *x, CMpi *y)
{
	/*if (x.IsNegative() || y.IsNegative()
		|| (x > (g_paramFieldP.m_oModulus-1)) || (y > (g_paramFieldP.m_oModulus-1)))
		return false;*/ //cqw
	CMpl *left = NULL;
	CMpl *right = NULL;
	CMpi *tmp = NULL;
	CMpi *one = NULL;
	int ret = 0;

	left = (CMpl *)malloc(sizeof(CMpl));
	right = (CMpl *)malloc(sizeof(CMpl));
	tmp = (CMpi *)malloc(sizeof(CMpi));
	one = (CMpi *)malloc(sizeof(CMpi));
	if(left == NULL || right == NULL || tmp ==NULL || one ==NULL)
	{
		printf("malloc error in CEllipticCurveCheckPoint");
		return 0;
	}

	if(CMpiIsNegative(x)==1 || CMpiIsNegative(y)==1)
		return 0;

	CMpiInit(tmp);
	CMpiInitN(one,1);
	CMpiSub(tmp,&(g_paramFieldP.m_oModulus),one);
	

	if(CMpiBigger(x,tmp)==1 || CMpiBigger(y,tmp)==1)
	{
		free(left); free(right); free(tmp);free(one);
		return 0;
	}

	CMplInit(left);
	CMplInit(right);

	CMpiMultiByCMpi(left,x,x);
	CMplAssignCMpi(right,&g_paramA);
	CMplAddAssign(left,right);
	CMplModAssign(tmp,left,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(left,tmp);
	
	CMpiMultiByCMpi(left,&(left->l),x);
	CMplAssignCMpi(right,&g_paramB);
	CMplAddAssign(left,right);
	CMplModAssign(tmp,left,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(left,tmp);

	CMpiMultiByCMpi(right,y,y);
	CMplModAssign(tmp,right,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(right,tmp);

	if(CMpiEqualCMpi(&(right->l),&(left->l)) == 1)
		ret = 1;
	else
		ret = 0;
	free(left); free(right); free(tmp);free(one);
	return ret;
}

void CEllipticCurveInitParam(void)
{
	int i,j;
	g_tablePntG = (CMpi *)malloc(sizeof(CMpi)*DCS_ECC_KEY_LENGTH*8*2);

	for(i=0; i<(DCS_ECC_KEY_LENGTH*8);i++)
	{
		for(j=0;j<2;j++)
			CMpiInit(&(g_tablePntG[i*2+j]));
	}
	
	g_paramFieldP.m_oModulus.m_aiMyInt[0] = 0xFFFFFFFF;
	g_paramFieldP.m_oModulus.m_aiMyInt[1] = 0xFFFFFFFF;
	g_paramFieldP.m_oModulus.m_aiMyInt[2] = 0x00000000;
	g_paramFieldP.m_oModulus.m_aiMyInt[3] = 0xFFFFFFFF;
	g_paramFieldP.m_oModulus.m_aiMyInt[4] = 0xFFFFFFFF;
	g_paramFieldP.m_oModulus.m_aiMyInt[5] = 0xFFFFFFFF;
	g_paramFieldP.m_oModulus.m_aiMyInt[6] = 0xFFFFFFFF;
	g_paramFieldP.m_oModulus.m_aiMyInt[7] = 0xFFFFFFFE;
	g_paramFieldP.m_oModulus.m_iCarry = 0;
	g_paramFieldP.m_oModulus.m_iLengthInInts = 8;
	g_paramFieldP.m_oModulus.m_iMySign = POSITIVE;

	g_paramA.m_aiMyInt[0] = 0xFFFFFFFC;
	g_paramA.m_aiMyInt[1] = 0xFFFFFFFF;
	g_paramA.m_aiMyInt[2] = 0x00000000;
	g_paramA.m_aiMyInt[3] = 0xFFFFFFFF;
	g_paramA.m_aiMyInt[4] = 0xFFFFFFFF;
	g_paramA.m_aiMyInt[5] = 0xFFFFFFFF;
	g_paramA.m_aiMyInt[6] = 0xFFFFFFFF;
	g_paramA.m_aiMyInt[7] = 0xFFFFFFFE;
	g_paramA.m_iCarry = 0;
	g_paramA.m_iLengthInInts = 8;
	g_paramA.m_iMySign = POSITIVE;

	g_paramB.m_aiMyInt[0] = 0x4D940E93;
	g_paramB.m_aiMyInt[1] = 0xDDBCBD41;
	g_paramB.m_aiMyInt[2] = 0x15AB8F92;
	g_paramB.m_aiMyInt[3] = 0xF39789F5;
	g_paramB.m_aiMyInt[4] = 0xCF6509A7;
	g_paramB.m_aiMyInt[5] = 0x4D5A9E4B;
	g_paramB.m_aiMyInt[6] = 0x9D9F5E34;
	g_paramB.m_aiMyInt[7] = 0x28E9FA9E;
	g_paramB.m_iCarry = 0;
	g_paramB.m_iLengthInInts = 8;
	g_paramB.m_iMySign = POSITIVE;

	g_PntGx.m_aiMyInt[0] = 0x334C74C7;
	g_PntGx.m_aiMyInt[1] = 0x715A4589;
	g_PntGx.m_aiMyInt[2] = 0xF2660BE1;
	g_PntGx.m_aiMyInt[3] = 0x8FE30BBF;
	g_PntGx.m_aiMyInt[4] = 0x6A39C994;
	g_PntGx.m_aiMyInt[5] = 0x5F990446;
	g_PntGx.m_aiMyInt[6] = 0x1F198119;
	g_PntGx.m_aiMyInt[7] = 0x32C4AE2C;
	g_PntGx.m_iCarry = 0;
	g_PntGx.m_iLengthInInts = 8;
	g_PntGx.m_iMySign = POSITIVE;


	g_PntGy.m_aiMyInt[0] = 0x2139F0A0;
	g_PntGy.m_aiMyInt[1] = 0x02DF32E5;
	g_PntGy.m_aiMyInt[2] = 0xC62A4740;
	g_PntGy.m_aiMyInt[3] = 0xD0A9877C;
	g_PntGy.m_aiMyInt[4] = 0x6B692153;
	g_PntGy.m_aiMyInt[5] = 0x59BDCEE3;
	g_PntGy.m_aiMyInt[6] = 0xF4F6779C;
	g_PntGy.m_aiMyInt[7] = 0xBC3736A2;
	g_PntGy.m_iCarry = 0;
	g_PntGy.m_iLengthInInts = 8;
	g_PntGy.m_iMySign = POSITIVE;

	g_paramN.m_oModulus.m_aiMyInt[0] = 0x39D54123;
	g_paramN.m_oModulus.m_aiMyInt[1] = 0x53BBF409;
	g_paramN.m_oModulus.m_aiMyInt[2] = 0x21C6052B;
	g_paramN.m_oModulus.m_aiMyInt[3] = 0x7203DF6B;
	g_paramN.m_oModulus.m_aiMyInt[4] = 0xFFFFFFFF;
	g_paramN.m_oModulus.m_aiMyInt[5] = 0xFFFFFFFF;
	g_paramN.m_oModulus.m_aiMyInt[6] = 0xFFFFFFFF;
	g_paramN.m_oModulus.m_aiMyInt[7] = 0xFFFFFFFE;
	g_paramN.m_oModulus.m_iCarry = 0;
	g_paramN.m_oModulus.m_iLengthInInts = 8;
	g_paramN.m_oModulus.m_iMySign = POSITIVE;


	CMpiInit(&g_Inv2);
	CMpiInport(&g_Inv2,g_pInv2,DCS_ECC_KEY_LENGTH);

	CMpiAssignCMpi(&(g_tablePntG[0*2+0]), &g_PntGx);
	CMpiAssignCMpi(&(g_tablePntG[0*2+1]), &g_PntGy);


//	CheckPoint(g_PntGx, g_PntGy);

	for (i = 1; i < DCS_ECC_KEY_LENGTH*8; i++)
		for(j=0;j<2;j++)
			CMpiInport(&(g_tablePntG[i*2+j]),g_acTable[(i-1)*2+j],DCS_ECC_KEY_LENGTH);
}


void CEllipticCurveMultiplyPubByTable5(CMpi *x, CMpi *y, CMpi *m, CMpi *PubX, CMpi *PubY)
{
	CMpi *z = NULL;
	if (CMpiEqualN(m,0) == 1)
	{
		CMpiInitN(x,0);
		CMpiInitN(y,0);
		return;
	}
	z = (CMpi *) malloc(sizeof(CMpi));
	if(z == NULL)
	{
		printf("malloc error in CEllipticCurveMultiplyPubByTable5");
		return;
	}
	CMpiInitN(z,1);
	
	CEllipticCurveMultiplyPubByTable6(x, y, z, m, PubX, PubY);
	CEllipticCurveJacobian2Stand(x, y, z);
	free(z);

	return;
}

/*void CEllipticCurveMultiplyPubByTable6(CMpi *x, CMpi *y, CMpi *z, CMpi *m, CMpi *PubX, CMpi *PubY)
{
	int i,iLenOfBits;

	CMpiInitN(z,1);
	iLenOfBits = CMpiGetLengthInBits(m);
	
	if(CMpiEqualCMpi(PubX,&(g_tablePntPub[0][0]))==0  || CMpiEqualCMpi(PubY,&(g_tablePntPub[0][1]))==0 )
	{
		CMpiAssignCMpi(&(g_tablePntPub[0][0]),PubX);
		CMpiAssignCMpi(&(g_tablePntPub[0][1]),PubY);
		CMpiInitN(&(g_tablePntPub[0][2]),1);
		
		if( (m->m_aiMyInt[0]) & 0x01)
		{
			CMpiAssignCMpi(x,PubX);
			CMpiAssignCMpi(y,PubY);
			CMpiInitN(z,1);
		}
		else
		{
			// Jacobian
			CMpiInitN(x,1);
			CMpiInitN(y,1);
			CMpiInitN(z,0);
		}

		for (i = 1; i < DCS_ECC_KEY_LENGTH*8; i++)
		{
			CEllipticCurveDoubleMplJacobian6(&(g_tablePntPub[i][0]), &(g_tablePntPub[i][1]), &(g_tablePntPub[i][2]), &(g_tablePntPub[i-1][0]), &(g_tablePntPub[i-1][1]), &(g_tablePntPub[i-1][2]));
			if ((i < iLenOfBits) && (0x01 & (m->m_aiMyInt[i >> 5] >> (i & 0x1f))))
				CEllipticCurveAddMplJacobian6(x, y, z, &(g_tablePntPub[i][0]), &(g_tablePntPub[i][1]), &(g_tablePntPub[i][2]));
		}
	}
	else
	{
		if ((m->m_aiMyInt[0]) & 0x01)
		{
			x = PubX;
			y = PubY;
			CMpiInitN(z,1);
		}
		else
		{
			// Jacobian
			CMpiInitN(x,1);
			CMpiInitN(y,1);
			CMpiInitN(z,0);
		}

		for (i = 1; i < DCS_ECC_KEY_LENGTH*8; i++)
		{
			if ((i < iLenOfBits) && (0x01 & (m->m_aiMyInt[i >> 5] >> (i & 0x1f))))
				CEllipticCurveAddMplJacobian6(x, y, z, &(g_tablePntPub[i][0]), &(g_tablePntPub[i][1]), &(g_tablePntPub[i][2]));
		}
	}
	return;
}*/
#define WINDOWS_BITS		(4)

void CEllipticCurveMultiplyPubByTable6(CMpi *x, CMpi *y, CMpi *z, CMpi *m, CMpi *PubX, CMpi *PubY)
{

	int i, k, pos;
	CMpi *pre_table = NULL;
	CMpi *one = NULL;
	one = (CMpi *)malloc(sizeof(CMpi));
	pre_table = (CMpi *)malloc(sizeof(CMpi)*(1<<WINDOWS_BITS)*3);
	if(one == NULL || pre_table == NULL)
		return;

	for(i = 0;i< 1<<WINDOWS_BITS;i++)
		for(k=0;k<3;k++)
			CMpiInit(&(pre_table[i*3+k]));

	
	CMpiAssignCMpi(&(pre_table[1*3+0]),PubX);
	CMpiAssignCMpi(&(pre_table[1*3+1]),PubY);
	CMpiInitN(&(pre_table[1*3+2]),1);

	for (i = 2; i < 1<<WINDOWS_BITS; i += 2)
	{
		CMpiInitN(one,1);
		CEllipticCurveDoubleMplJacobian6(&(pre_table[i*3+0]), &(pre_table[i*3+1]), &(pre_table[i*3+2]), &(pre_table[(i>>1)*3+0]), &(pre_table[(i>>1)*3+1]), &(pre_table[(i>>1)*3+2]));
		CMpiAssignCMpi(&(pre_table[(i+1)*3+0]),&(pre_table[i*3+0]));
		CMpiAssignCMpi(&(pre_table[(i+1)*3+1]),&(pre_table[i*3+1]));
		CMpiAssignCMpi(&(pre_table[(i+1)*3+2]),&(pre_table[i*3+2]));
		CEllipticCurveAddMplJacobian6(&(pre_table[(i+1)*3+0]),&(pre_table[(i+1)*3+1]),&(pre_table[(i+1)*3+2]),PubX,PubY,one);
	}


	CMpiInitN(x,1);
	CMpiInitN(y,1);
	CMpiInitN(z,0);
	for (i = m->m_iLengthInInts-1; i >= 0; i--)
	{
		for (k = sizeof(unsigned int)*8 - WINDOWS_BITS; k >= 0; k -= WINDOWS_BITS)
		{
			CEllipticCurveDoubleMplJacobian3(x,y,z);
			CEllipticCurveDoubleMplJacobian3(x,y,z);
			CEllipticCurveDoubleMplJacobian3(x,y,z);
			CEllipticCurveDoubleMplJacobian3(x,y,z);
			pos = ((m->m_aiMyInt[i] >> k) & ((1<<WINDOWS_BITS)-1));
			//if (pos)
			{
				CEllipticCurveAddMplJacobian6New(x, y, z, &(pre_table[pos*3+0]), &(pre_table[pos*3+1]), &(pre_table[pos*3+2]));
			}

		}
	}
	free(one);
	free(pre_table);
}


void CEllipticCurveDoubleMplJacobian6(CMpi *x2, CMpi *y2, CMpi *z2, CMpi *x, CMpi *y, CMpi *z)
{
	CMpiAssignCMpi(x2,x);
	CMpiAssignCMpi(y2,y);
	CMpiAssignCMpi(z2,z);
	CEllipticCurveDoubleMplJacobian3(x2, y2, z2);
}

void CEllipticCurveDoubleMplJacobian3(CMpi *x, CMpi *y, CMpi *z)
{
	CMpl *lltmp = NULL;
	CMpl *lda1 = NULL;
	CMpl *lda2 = NULL;
	CMpi *lda3 = NULL;
	CMpl *tempvar = NULL;
	CMpi *cmpitemp = NULL;
	if(CMpiEqualN(x,1)==1 && CMpiEqualN(y,1)==1 && CMpiEqualN(z,0)==1)
	{
		return;
	}

	lltmp = (CMpl *)malloc(sizeof(CMpl));
	lda1 =  (CMpl *)malloc(sizeof(CMpl));
	lda2 =  (CMpl *)malloc(sizeof(CMpl));
	tempvar = (CMpl *)malloc(sizeof(CMpl));
	lda3 = (CMpi *)malloc(sizeof(CMpi));
	cmpitemp = (CMpi *)malloc(sizeof(CMpi));

	if(lltmp == NULL || lda1 == NULL || lda2 == NULL || tempvar == NULL || lda3 == NULL || cmpitemp == NULL)
	{
		printf("malloc error in CEllipticCurveDoubleMplJacobian3");
		return;
	}

	CMplInit(lltmp); CMplInit(lda1); CMplInit(lda2);
	CMpiInit(lda3); CMplInit(tempvar); CMpiInit(cmpitemp);

	CMpiFastSquare(lltmp,x);
	CMplModAssign(lda3,lltmp,&(g_paramFieldP.m_oModulus)); //temp use lda3
	CMplAssignCMpi(lda1,lda3);
	CMplAssignCMpi(lltmp,lda3);
	
	
	CMplBitShiftLeft(lda1,1);
//	lda1 = lda1.l * 3;
	CMplAssignCMpi(lda2,&(lltmp->l)); //temp use lda2
	CMplAddAssign(lda1,lda2);

	while (CMpiEqualN(&(lda1->h),0)==0)
	{
		CMplAssignCMpi(lda2,&(g_paramFieldP.m_oModulus)); //temp use lda2
		CMplSubAssign(lda1,lda2);
	}	

	while(CMpiNotBigger(&(lda1->l), &(g_paramFieldP.m_oModulus))==0)
	{
		CMpiSubAssign(&(lda1->l),&(g_paramFieldP.m_oModulus));
	}

//	lltmp = z*z;
	CMpiFastSquare(lltmp,z);
	CMplModAssign(lda3,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,lda3);
	
//	lltmp = lltmp.l * lltmp.l;
	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiFastSquare(lltmp,cmpitemp);
	CMplModAssign(lda3,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,lda3);
	
	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiMultiByCMpi(lltmp,cmpitemp,&g_paramA);
	CMplModAssign(lda3,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,lda3);
	
	CMplAssignCMpi(tempvar,&(lltmp->l));
	CMplAddAssign(lda1, tempvar);
	while (CMpiEqualN(&(lda1->h),0)==0)
	{
		CMplAssignCMpi(tempvar,&(g_paramFieldP.m_oModulus)); 
		CMplSubAssign(lda1,tempvar);
	}
	while(CMpiNotBigger(&(lda1->l), &(g_paramFieldP.m_oModulus))==0)
		CMpiSubAssign(&(lda1->l),&(g_paramFieldP.m_oModulus));
	// lambda1, ok


	CMpiFastSquare(lda2,y);
	CMplModAssign(cmpitemp,lda2,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lda2,cmpitemp);

//	lltmp = lda2.l * lda2.l;
	CMpiFastSquare(lltmp,&(lda2->l));
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);
	
	CMplBitShiftLeft(lltmp,3);
//	CMpi lda3 = (lltmp %= g_paramFieldP.m_oModulus);		// lambda3, ok
	while (CMpiEqualN(&(lltmp->h),0)==0)
	{
		CMplAssignCMpi(tempvar,&(g_paramFieldP.m_oModulus)); 
		CMplSubAssign(lltmp,tempvar);
	}
	
	while(CMpiNotBigger(&(lltmp->l), &(g_paramFieldP.m_oModulus))==0)
		CMpiSubAssign(&(lltmp->l),&(g_paramFieldP.m_oModulus));

	CMpiAssignCMpi(lda3,&(lltmp->l));
	CMpiAssignCMpi(cmpitemp,&(lda2->l));
	CMpiMultiByCMpi(lda2,x,cmpitemp);

	CMplModAssign(cmpitemp,lda2,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lda2,cmpitemp);

	CMplBitShiftLeft(lda2,2);
	
	while (CMpiEqualN(&(lda2->h),0)==0)
	{
		CMplAssignCMpi(tempvar,&(g_paramFieldP.m_oModulus)); 
		CMplSubAssign(lda2,tempvar);
	}

	while(CMpiNotBigger(&(lda2->l), &(g_paramFieldP.m_oModulus))==0)
		CMpiSubAssign(&(lda2->l),&(g_paramFieldP.m_oModulus));
	
	// x
//	lltmp = lda1.l * lda1.l;
	CMpiFastSquare(lltmp,&(lda1->l));
	CMplModAssign(x,lltmp,&(g_paramFieldP.m_oModulus));

	CMplAssignCMpl(lltmp,lda2);
	CMplBitShiftLeft(lltmp,1);
	while (CMpiEqualN(&(lltmp->h),0)==0)
	{
		CMplAssignCMpi(tempvar,&(g_paramFieldP.m_oModulus)); 
		CMplSubAssign(lltmp,tempvar);
	}
	while(CMpiNotBigger(&(lltmp->l), &(g_paramFieldP.m_oModulus))==0)
		CMpiSubAssign(&(lltmp->l),&(g_paramFieldP.m_oModulus));
	
	CMpiSubAssign(x,&(lltmp->l));
	if(CMpiIsNegative(x)==1)
		CMpiAddAssign(x,&(g_paramFieldP.m_oModulus));
	// y
	CMplAssignCMpi(tempvar,x);
	CMplSubAssign(lda2,tempvar);

	CMpiMultiByCMpi(lltmp,&(lda1->l),&(lda2->l));
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);
	
	CMplAssignCMpi(tempvar,lda3);
	CMplSubAssign(lltmp,tempvar);
	
	CMpiAssignCMpi(&(lda1->l),y);
	CMplModAssign(y,lltmp,&(g_paramFieldP.m_oModulus));
	if (CMpiIsNegative(y)==1)
		CMpiAddAssign(y,&(g_paramFieldP.m_oModulus));
	// z
	CMpiMultiByCMpi(lltmp,&(lda1->l),z);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);
	CMplBitShiftLeft(lltmp,1);

	while(CMpiEqualN(&(lltmp->h),0) == 0)
	{
		CMplAssignCMpi(tempvar,&(g_paramFieldP.m_oModulus)); 
		CMplSubAssign(lltmp,tempvar);
	}
	while(CMpiNotBigger(&(lltmp->l), &(g_paramFieldP.m_oModulus))==0)
		CMpiSubAssign(&(lltmp->l),&(g_paramFieldP.m_oModulus));
	
	CMpiAssignCMpl(z,lltmp);
	free(lltmp); free(lda1); free(lda2); free(tempvar); free(lda3); free(cmpitemp);
	return;
}

void CEllipticCurveMultiplyGByTable3(CMpi *x, CMpi *y, CMpi *m)
{
	CMpi *z = NULL;
	/*if (CMpiEqualN(m,0)==1)
	{
		CMpiInitN(x,0);
		CMpiInitN(y,0);
		return;
	}
	CMpiInitN(&z,1);
	*/
	z = (CMpi *)malloc(sizeof(CMpi));
	if(z == NULL)
	{
		printf("malloc error in CEllipticCurveMultiplyGByTable3");
		return;
	}
	CMpiInit(z);
	CEllipticCurveMultiplyGByTable4(x, y, z, m);
	CEllipticCurveJacobian2Stand(x,y,z);
	free(z);
}

void CEllipticCurveMultiplyGByTable4(CMpi *x, CMpi *y, CMpi *z, CMpi *m)
{
	int iLenOfBits,i;
	CMpi *one = NULL;
	one = (CMpi *)malloc(sizeof(CMpi));
	if(one == NULL)
	{
		printf("malloc error in CEllipticCurveMultiplyGByTable4");
		return;
	}

	if(m->m_aiMyInt[0] & 0x01)
	{
		CMpiAssignCMpi(x,&(g_tablePntG[0*2+0]));
		CMpiAssignCMpi(y,&(g_tablePntG[0*2+1]));
		CMpiInitN(z,1);
	}
	else
	{
		CMpiInitN(x,1);
		CMpiInitN(y,1);
		CMpiInitN(z,0);
	}


	iLenOfBits = CMpiGetLengthInBits(m);
	CMpiInitN(one,1);
	for (i = 1; i< iLenOfBits; i++)
	//for (i = 1; i< 16; i++)
	{
		if (0x01 & (m->m_aiMyInt[i >> 5] >> (i & 0x1f)))
		{//i >> 5 equal to i/32 to determine which int, i&0x1f to determine which bit, 0x01 & * to determine whether the bit is 0 or 1+
			CEllipticCurveAddMplJacobian6(x,y,z,&(g_tablePntG[i*2+0]),&(g_tablePntG[i*2+1]),one);
		}
	}
	free(one);
}

void CEllipticCurveAddMplJacobian6(CMpi *x, CMpi *y, CMpi *z, CMpi *mx, CMpi *my, CMpi *mz)
{
	CMpl *lltmp = NULL;
	CMpl *lda1 = NULL;
	CMpl *lda2 = NULL;
	CMpi *lda3 = NULL;
	CMpi *lda4 = NULL;
	CMpi *lda5 = NULL;
	CMpi *lda6 = NULL;
	CMpi *cmpitemp = NULL;
	CMpl *cmpltemp = NULL;


	if( (CMpiEqualN(x,1)==1) && (CMpiEqualN(y,1)==1) && (CMpiEqualN(z,0) == 1) )
	{
		CMpiAssignCMpi(x,mx);
		CMpiAssignCMpi(y,my);
		CMpiAssignCMpi(z,mz);
		return;
	}
	if( (CMpiEqualN(mx,1)==1) && (CMpiEqualN(my,1)==1) && (CMpiEqualN(mz,0) == 1) )
	{
		return;
	}	

	if( (CMpiEqualCMpi(x,mx)==1) && (CMpiEqualCMpi(y,my)==1) && (CMpiEqualCMpi(z,mz)==1))
	{
		CEllipticCurveDoubleMplJacobian3(x, y, z);
		return;
	}

	lltmp = (CMpl *)malloc(sizeof(CMpl));
	lda1  = (CMpl *)malloc(sizeof(CMpl));
	lda2 = (CMpl *)malloc(sizeof(CMpl)); 
	lda3 = (CMpi *)malloc(sizeof(CMpi)); 
	lda4 = (CMpi *)malloc(sizeof(CMpi));
	lda5 = (CMpi *)malloc(sizeof(CMpi));
	lda6 = (CMpi *)malloc(sizeof(CMpi));
	cmpitemp = (CMpi *)malloc(sizeof(CMpi));
	cmpltemp= (CMpl *)malloc(sizeof(CMpl));
	

	CMplInit(lltmp);CMplInit(lda1);CMplInit(lda2);CMplInit(cmpltemp);
	CMpiInit(lda3); CMpiInit(lda4);CMpiInit(lda5); CMpiInit(lda6);CMpiInit(cmpitemp);


	CMplAssignCMpi(lda1,x);
	CMpiAssignCMpi(lda4,y);
	// lda4, ok
	CMpiFastSquare(lltmp,z);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	//	lltmp = z*z;
	CMpiMultiByCMpi(lda2,&(lltmp->l),mx);
	CMplModAssign(cmpitemp,lda2,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lda2,cmpitemp);
	// lda2, ok

	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiMultiByCMpi(lltmp,cmpitemp,z);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiMultiByCMpi(lltmp,cmpitemp,my);
	CMplModAssign(lda5,lltmp,&(g_paramFieldP.m_oModulus));
	// lda5, ok

	CMpiSub(lda3, &(lda1->l), &(lda2->l));
	if(CMpiIsNegative(lda3)==1)
		CMpiAddAssign(lda3, &(g_paramFieldP.m_oModulus));
	// lda3, ok
	CMpiSub(lda6,lda4,lda5);
	if(CMpiIsNegative(lda6)==1)
	{
		CMpiAddAssign(lda6,&(g_paramFieldP.m_oModulus));
	}
	// lda6, ok
	// 111111111111111111111111111111111111111111111
	CMplAddAssign(lda1,lda2);
	while(CMpiEqualN(&(lda1->h),0) ==0)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplSubAssign(lda1,cmpltemp);
	}

	while(CMpiNotBigger(&(lda1->l), &(g_paramFieldP.m_oModulus)) == 0)
		CMpiSubAssign(&(lda1->l),&(g_paramFieldP.m_oModulus));
	// lda7, ok, lda1

	// 777777777777777777777777777777777777777777777
	// 222222222222222222222222222222222222222222222
	CMpiAdd(cmpitemp,lda4,lda5);
	CMplAssignCMpi(lda2,cmpitemp);
	while(CMpiEqualN(&(lda2->h),0) == 0)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplSubAssign(lda2,cmpltemp);
	}

	while(CMpiNotBigger(&(lda2->l), &(g_paramFieldP.m_oModulus)) == 0)
		CMpiSubAssign(&(lda2->l),&(g_paramFieldP.m_oModulus));
	// lda8, ok, lda2
	// 888888888888888888888888888888888888888888888
	// z
	CMpiMultiByCMpi(lltmp,z,lda3);
	CMplModAssign(z,lltmp,&(g_paramFieldP.m_oModulus));
	// lda4 = 3*3
//	lltmp = lda3*lda3;
	CMpiFastSquare(lltmp,lda3);
	CMplModAssign(lda4,lltmp,&(g_paramFieldP.m_oModulus));
	// lda5 = 3*3*7
	CMpiMultiByCMpi(lltmp,lda4,&(lda1->l));
	CMplModAssign(lda5,lltmp,&(g_paramFieldP.m_oModulus));

	// x
//	lltmp = lda6*lda6;
	CMpiFastSquare(lltmp,lda6);
	CMplModAssign(x,lltmp,&(g_paramFieldP.m_oModulus));
	CMpiSubAssign(x,lda5);
	if(CMpiIsNegative(x)==1)
		CMpiAddAssign(x,&(g_paramFieldP.m_oModulus));

	// 111111111111111111111111111111111111111111111
	CMplAssignCMpi(lltmp,x);
	CMplBitShiftLeft(lltmp,1);
	
	while(CMpiEqualN(&(lltmp->h),0) == 0)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplSubAssign(lltmp,cmpltemp);
	}
	while(CMpiNotBigger(&(lltmp->l),&(g_paramFieldP.m_oModulus))==0)
	{
		CMpiSubAssign(&(lltmp->l),&(g_paramFieldP.m_oModulus));
	}	


	CMpiSub(cmpitemp,lda5,&(lltmp->l));
	CMplAssignCMpi(lda1,cmpitemp);
	if(CMpiIsNegative(&(lda1->l))==1)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplAddAssign(lda1,cmpltemp);
	}

	// lda9, ok, lda2
	// 999999999999999999999999999999999999999999999

	// y
	CMpiMultiByCMpi(lltmp,lda4,lda3);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);
	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiMultiByCMpi(lltmp,cmpitemp,&(lda2->l));
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	CMpiAssignCMpi(cmpitemp,&(lda1->l));
	CMpiMultiByCMpi(lda1,cmpitemp,lda6);
	CMplModAssign(cmpitemp,lda1,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lda1,cmpitemp);
	
	CMpiSubAssign(&(lda1->l),&(lltmp->l));

	if(CMpiIsNegative(&(lda1->l))==1)
		CMpiAddAssign(&(lda1->l),&(g_paramFieldP.m_oModulus));
	
	//	lda1 = lda1.l * g_Inv2;
	if (lda1->l.m_aiMyInt[0] & 0x01)
	{
		CMplBitShiftRight(lda1,1);
		CMpiAdd(y,&(lda1->l),&g_Inv2);
		while(CMpiNotBigger(y,&(g_paramFieldP.m_oModulus)) == 0)
			CMpiSubAssign(y,&(g_paramFieldP.m_oModulus));
	}
	else
	{
		CMplBitShiftRight(lda1,1);
		CMpiAssignCMpi(y,&(lda1->l));
	}

	free(lltmp);free(lda1);free(lda2);free(cmpltemp);
	free(lda3); free(lda4);free(lda5); free(lda6);free(cmpitemp);

	return;
}

//corresponding to the pan wuqiong's AddMplJacobian
void CEllipticCurveAddMplJacobian6New(CMpi *x, CMpi *y, CMpi *z, CMpi *mx, CMpi *my, CMpi *mz)
{
	CMpl *lltmp =NULL;
	CMpl *lda1 =NULL;
	CMpl *lda2 =NULL;
	CMpi *lda3 =NULL;
	CMpi *lda4 =NULL;
	CMpi *lda5 =NULL;
	CMpi *lda6 =NULL;
	CMpi *cmpitemp =NULL;
	CMpl *cmpltemp =NULL;

	if(mx->m_iLengthInInts == 0 && my->m_iLengthInInts == 0 && mz->m_iLengthInInts == 0)
		return;

	if( (CMpiEqualN(x,1)==1) && (CMpiEqualN(y,1)==1) && (CMpiEqualN(z,0) == 1) )
	{
		CMpiAssignCMpi(x,mx);
		CMpiAssignCMpi(y,my);
		CMpiAssignCMpi(z,mz);
		return;
	}
	if( (CMpiEqualN(mx,1)==1) && (CMpiEqualN(my,1)==1) && (CMpiEqualN(mz,0) == 1) )
	{
		return;
	}	

	if( (CMpiEqualCMpi(x,mx)==1) && (CMpiEqualCMpi(y,my)==1) && (CMpiEqualCMpi(z,mz)==1))
	{
		CEllipticCurveDoubleMplJacobian3(x, y, z);
		return;
	}	
	lltmp =(CMpl *)malloc(sizeof(CMpl));
	lda1 =(CMpl *)malloc(sizeof(CMpl));
	lda2 =(CMpl *)malloc(sizeof(CMpl));
	lda3 =(CMpi *)malloc(sizeof(CMpi));
	lda4 =(CMpi *)malloc(sizeof(CMpi));
	lda5 =(CMpi *)malloc(sizeof(CMpi));
	lda6 =(CMpi *)malloc(sizeof(CMpi));
	cmpitemp =(CMpi *)malloc(sizeof(CMpi));
	cmpltemp =(CMpl *)malloc(sizeof(CMpl));

	CMplInit(lltmp);CMplInit(lda1);CMplInit(lda2);CMplInit(cmpltemp);
	CMpiInit(lda3); CMpiInit(lda4);CMpiInit(lda5); CMpiInit(lda6);CMpiInit(cmpitemp);

	//	CMpl lltmp = mz*mz;
	CMpiFastSquare(lltmp,mz);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	CMpiMultiByCMpi(lda1,&(lltmp->l),x);
	CMplModAssign(cmpitemp,lda1,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lda1,cmpitemp);
	// lda1, ok

	CMpiMultiByCMpi(cmpltemp,&(lltmp->l),mz);
	CMplModAssign(cmpitemp,cmpltemp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	CMpiMultiByCMpi(cmpltemp,&(lltmp->l),y);
	CMplModAssign(lda4,cmpltemp,&(g_paramFieldP.m_oModulus));
	// lda4, ok

	CMpiFastSquare(lltmp,z);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	//	lltmp = z*z;
	CMpiMultiByCMpi(lda2,&(lltmp->l),mx);
	CMplModAssign(cmpitemp,lda2,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lda2,cmpitemp);
	// lda2, ok


	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiMultiByCMpi(lltmp,cmpitemp,z);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiMultiByCMpi(lltmp,cmpitemp,my);
	CMplModAssign(lda5,lltmp,&(g_paramFieldP.m_oModulus));
	// lda5, ok

	CMpiSub(lda3, &(lda1->l), &(lda2->l));
	if(CMpiIsNegative(lda3)==1)
		CMpiAddAssign(lda3, &(g_paramFieldP.m_oModulus));
	// lda3, ok

	CMpiSub(lda6,lda4,lda5);
	if(CMpiIsNegative(lda6)==1)
	{
		CMpiAddAssign(lda6,&(g_paramFieldP.m_oModulus));
	}
	// lda6, ok

	// 111111111111111111111111111111111111111111111
	CMplAddAssign(lda1,lda2);
	while(CMpiEqualN(&(lda1->h),0) ==0)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplSubAssign(lda1,cmpltemp);
	}

	while(CMpiNotBigger(&(lda1->l), &(g_paramFieldP.m_oModulus)) == 0)
		CMpiSubAssign(&(lda1->l),&(g_paramFieldP.m_oModulus));
	// lda7, ok, lda1

	// 777777777777777777777777777777777777777777777
	// 222222222222222222222222222222222222222222222
	CMpiAdd(cmpitemp,lda4,lda5);
	CMplAssignCMpi(lda2,cmpitemp);
	while(CMpiEqualN(&(lda2->h),0) == 0)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplSubAssign(lda2,cmpltemp);
	}

	while(CMpiNotBigger(&(lda2->l), &(g_paramFieldP.m_oModulus)) == 0)
		CMpiSubAssign(&(lda2->l),&(g_paramFieldP.m_oModulus));
	// lda8, ok, lda2

	// 888888888888888888888888888888888888888888888
	// z
	CMpiMultiByCMpi(lltmp,z,mz);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	CMpiMultiByCMpi(lltmp,cmpitemp,lda3);
	CMplModAssign(z,lltmp,&(g_paramFieldP.m_oModulus));

	// lda4 = 3*3
//	lltmp = lda3*lda3;
	CMpiFastSquare(lltmp,lda3);
	CMplModAssign(lda4,lltmp,&(g_paramFieldP.m_oModulus));
	// lda5 = 3*3*7
	CMpiMultiByCMpi(lltmp,lda4,&(lda1->l));
	CMplModAssign(lda5,lltmp,&(g_paramFieldP.m_oModulus));

	// x
//	lltmp = lda6*lda6;
	CMpiFastSquare(lltmp,lda6);
	CMplModAssign(x,lltmp,&(g_paramFieldP.m_oModulus));
	CMpiSubAssign(x,lda5);
	if(CMpiIsNegative(x)==1)
		CMpiAddAssign(x,&(g_paramFieldP.m_oModulus));


	// 111111111111111111111111111111111111111111111
	CMplAssignCMpi(lltmp,x);
	CMplBitShiftLeft(lltmp,1);
	
	while(CMpiEqualN(&(lltmp->h),0) == 0)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplSubAssign(lltmp,cmpltemp);
	}
	while(CMpiNotBigger(&(lltmp->l),&(g_paramFieldP.m_oModulus))==0)
	{
		CMpiSubAssign(&(lltmp->l),&(g_paramFieldP.m_oModulus));
	}	

	CMpiSub(cmpitemp,lda5,&(lltmp->l));
	CMplAssignCMpi(lda1,cmpitemp);
	if(CMpiIsNegative(&(lda1->l))==1)
	{
		CMplAssignCMpi(cmpltemp,&(g_paramFieldP.m_oModulus));
		CMplAddAssign(lda1,cmpltemp);
	}
	// lda9, ok, lda2
	// 999999999999999999999999999999999999999999999

	// y
	CMpiMultiByCMpi(lltmp,lda4,lda3);
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);
	CMpiAssignCMpi(cmpitemp,&(lltmp->l));
	CMpiMultiByCMpi(lltmp,cmpitemp,&(lda2->l));
	CMplModAssign(cmpitemp,lltmp,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lltmp,cmpitemp);

	CMpiAssignCMpi(cmpitemp,&(lda1->l));
	CMpiMultiByCMpi(lda1,cmpitemp,lda6);
	CMplModAssign(cmpitemp,lda1,&(g_paramFieldP.m_oModulus));
	CMplAssignCMpi(lda1,cmpitemp);
	
	CMpiSubAssign(&(lda1->l),&(lltmp->l));

	if(CMpiIsNegative(&(lda1->l))==1)
		CMpiAddAssign(&(lda1->l),&(g_paramFieldP.m_oModulus));
	
	CMpiInitN(&(lda1->h),0);

	//	lda1 = lda1.l * g_Inv2;
	if (lda1->l.m_aiMyInt[0] & 0x01)
	{
		CMplBitShiftRight(lda1,1);
		CMpiAdd(y,&(lda1->l),&g_Inv2);
		while(CMpiNotBigger(y,&(g_paramFieldP.m_oModulus)) == 0)
			CMpiSubAssign(y,&(g_paramFieldP.m_oModulus));
	}
	else
	{
		CMplBitShiftRight(lda1,1);
		CMpiAssignCMpi(y,&(lda1->l));
	}

	free(lltmp);free(lda1);free(lda2);free(cmpltemp);
	free(lda3); free(lda4);free(lda5); free(lda6);free(cmpitemp);
	return;
}


int PubHashUserId(CECCPublicKey *t, unsigned char *pbOut, unsigned char *pUserName, int iLenOfName)
{
	unsigned char ENTL[2];
	HASH_STATE hashState;
	unsigned char bufPnt[MPI_LENGTH*4];
	if (!pUserName)
		iLenOfName = 0;
	// printinfohex("user", pUserName, iLenOfName);

	ENTL[0] = (unsigned char)(iLenOfName >> 5);
	ENTL[1] = (unsigned char)(iLenOfName << 3);
	HashInit(&hashState, ENTL, 2);
	if (pUserName)
		HashPending(&hashState, pUserName, iLenOfName);
	
	CMpiExport(&g_paramA,bufPnt,DCS_ECC_KEY_LENGTH);
	// printinfohex("A", bufPnt, DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&g_paramB,bufPnt,DCS_ECC_KEY_LENGTH);
	// printinfohex("B", bufPnt, DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&g_PntGx,bufPnt,DCS_ECC_KEY_LENGTH);
	// printinfohex("Gx", bufPnt, DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&g_PntGy,bufPnt,DCS_ECC_KEY_LENGTH);
	// printinfohex("Gy", bufPnt, DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&(t->m_pntPx),bufPnt,DCS_ECC_KEY_LENGTH);
	// printinfohex("Px", bufPnt, DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&(t->m_pntPy),bufPnt,DCS_ECC_KEY_LENGTH);
	// printinfohex("Py", bufPnt, DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);

	HashFinal(pbOut,&hashState);

	return HASH_256;
}

int PriHashUserId(CECCPrivateKey *t, unsigned char *pbOut, unsigned char *pUserName, int iLenOfName)
{
	unsigned char ENTL[2];
	HASH_STATE hashState;
	unsigned char bufPnt[MPI_LENGTH*4];
	
	if (!pUserName)
		iLenOfName = 0;

	
	ENTL[0] = (unsigned char)(iLenOfName >> 5);
	ENTL[1] = (unsigned char)(iLenOfName << 3);	
	HashInit(&hashState, ENTL, 2);
	if (pUserName)
		HashPending(&hashState, pUserName, iLenOfName);
	
	CMpiExport(&g_paramA,bufPnt,DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&g_paramB,bufPnt,DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&g_PntGx,bufPnt,DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&g_PntGy,bufPnt,DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&(t->m_pntPx),bufPnt,DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);
	CMpiExport(&(t->m_pntPy),bufPnt,DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, bufPnt, DCS_ECC_KEY_LENGTH);

	HashFinal(pbOut,&hashState);

	return HASH_256;
}

int Verify(CECCPublicKey *pk,unsigned char *pDigest, int iLenOfDigest, unsigned char *pSig, int iLenOfSig)
{
	CMpi *e = NULL;
	CMpi *r = NULL;
	CMpi *s = NULL;
	CMpl *t = NULL;
	CMpi *cmpitemp = NULL;
	CMpl *cmpltemp = NULL;

	CMpi *x1 = NULL;
	CMpi *y1 = NULL;
	CMpi *z1 = NULL;
	CMpi *x2 = NULL;
	CMpi *y2 = NULL;
	CMpi *z2 = NULL;

	int ret = 0;

	if (iLenOfSig != (2*CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus))))
		return 0;

	e = (CMpi *)malloc(sizeof(CMpi));
	CMpiInit(e);

	if(CMpiInport(e,pDigest,iLenOfDigest) == 0)
	{
		free(e);
		return 0;
	}

	r = (CMpi *)malloc(sizeof(CMpi));
	s = (CMpi *)malloc(sizeof(CMpi));
	
    
	CMpiInit(r); CMpiInit(s);

	CMpiInport(r,pSig,CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
	CMpiInport(s,pSig+CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)),CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
	

	if( (CMpiEqualN(r,0) == 1) || (CMpiNotBigger(r,&(g_paramN.m_oModulus)) == 0) 
		 || (CMpiEqualN(s,0) == 1) ||  (CMpiNotBigger(s,&(g_paramN.m_oModulus)) == 0)  )
	{
		free(r); free(s); free(e);
		return 0;
	}
	t = (CMpl *)malloc(sizeof(CMpl));
	cmpitemp = (CMpi *)malloc(sizeof(CMpi));
	cmpltemp = (CMpl *)malloc(sizeof(CMpl));

	x1 = (CMpi *)malloc(sizeof(CMpi));
	y1 = (CMpi *)malloc(sizeof(CMpi));
	z1 = (CMpi *)malloc(sizeof(CMpi));
	x2 = (CMpi *)malloc(sizeof(CMpi));
	y2 = (CMpi *)malloc(sizeof(CMpi));
	z2 = (CMpi *)malloc(sizeof(CMpi));

	CMplInit(t); CMpiInit(cmpitemp); CMplInit(cmpltemp);

	CMplAssignCMpi(t,r);
	CMplAssignCMpi(cmpltemp,s);
	CMplAddAssign(t,cmpltemp);
	CMplModAssign(cmpitemp,t,&(g_paramN.m_oModulus));
	CMplAssignCMpi(t,cmpitemp);

	if(CMpiEqualN(&(t->l),0)==1)
	{
		free(r);free(s);free(e);free(t);free(cmpitemp);free(cmpltemp);
		free(x1);free(y1);free(z1);free(x2);free(y2);free(z2);
		return 0;
	}

	CMpiInit(x1); CMpiInit(y1); CMpiInit(z1);
	CMpiInit(x2); CMpiInit(y2); CMpiInit(z2);

	CEllipticCurveMultiplyGByTable4(x1, y1, z1, s);
	CEllipticCurveMultiplyPubByTable6(x2, y2, z2, &(t->l), &(pk->m_pntPx), &(pk->m_pntPy));
	CEllipticCurveAddMplJacobian6New(x1, y1, z1, x2, y2, z2);
	CEllipticCurveJacobian2Stand(x1, y1, z1);

	CMplAssignCMpi(t,e);
	CMplAssignCMpi(cmpltemp,x1);
	CMplAddAssign(t,cmpltemp);

	CMplModAssign(cmpitemp,t,&(g_paramN.m_oModulus));
	CMplAssignCMpi(t,cmpitemp);
	
	if(CMpiEqualCMpi(r,&(t->l))==1)
		ret = 1;
	else
		ret = 0;
	free(r);free(s);free(e);free(t);free(cmpitemp);free(cmpltemp);
	free(x1);free(y1);free(z1);free(x2);free(y2);free(z2);
	return ret;
}

int Encrypt(CECCPublicKey *pk, unsigned char *pbCipher1, unsigned char *pbX2, unsigned char *pbY2,  unsigned char *pRnd, int iLenOfRnd)
{
	int iLenOfC1;
	CMpi *rnd = NULL;
	CMpi *x = NULL;
	CMpi *y = NULL;
	rnd = (CMpi *)malloc(sizeof(CMpi));
	x = (CMpi *)malloc(sizeof(CMpi));
	y = (CMpi *)malloc(sizeof(CMpi));

	while (1)
	{
		if (!pRnd )
			return 0;

		CMpiInit(rnd);

		if(CMpiInport(rnd,pRnd,iLenOfRnd) ==0)
		{
			free(rnd);free(x);free(y);
			return 0;
		}
		
		while(CMpiBigger(rnd,&(g_paramN.m_oModulus)) == 1)
		{
			CMpiSubAssign(rnd, &(g_paramN.m_oModulus));
		}

		if( (CMpiEqualN(rnd,0)==1) || (CMpiNotBigger(rnd, &(g_paramN.m_oModulus))==0) )
		{
			free(rnd);free(x);free(y);
			return 0;
		}

		CMpiInit(x); CMpiInit(y);

		CEllipticCurveMultiplyGByTable3(x,y,rnd);
//		iLenOfC1 = ExportPoint(pbCipher1, x, y);
		iLenOfC1 = CMpiExport(x,pbCipher1,DCS_ECC_KEY_LENGTH);
		iLenOfC1 += CMpiExport(y,pbCipher1+DCS_ECC_KEY_LENGTH,DCS_ECC_KEY_LENGTH);

		CEllipticCurveMultiplyPubByTable5(x,y,rnd,&(pk->m_pntPx), &(pk->m_pntPy));
		if(CMpiEqualN(y,0)==1)
		{
			free(rnd);free(x);free(y);
			return 0;
		}
		CMpiExport(x,pbX2,CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
		CMpiExport(y,pbY2,CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
		break;
	}
	free(rnd);free(x);free(y);
	return iLenOfC1;
}

int EncryptMessage(CECCPublicKey *pk, unsigned char *pbOut,  unsigned char *pbIn, int iLenOfIn,  unsigned char *pRnd, int iLenOfRnd)
{
	unsigned char secret[MPI_LENGTH*4*2];
	int iLenOfSecret;
	int iLenOfOut,i,kkk;
	HASH_STATE stateHash;
	while (1)
	{
		iLenOfOut = Encrypt(pk, pbOut, secret, secret+DCS_ECC_KEY_LENGTH, pRnd, iLenOfRnd); //C1 OK
		if (!iLenOfOut)
			return 0;	// error

		iLenOfSecret = 2*DCS_ECC_KEY_LENGTH;
		HashInit(&stateHash, secret, iLenOfSecret/2);
		HashPending(&stateHash, pbIn, iLenOfIn);
		HashPending(&stateHash, secret+iLenOfSecret/2, iLenOfSecret/2);
		HashFinal(pbOut+iLenOfOut, &stateHash);
		iLenOfOut += HASH_256;
		
		KDF(pbOut+iLenOfOut, iLenOfIn, secret, iLenOfSecret);
		kkk = 0;
		while (kkk < iLenOfIn)
		{
			if (0 != pbOut[iLenOfOut+kkk])
				break;
			kkk++;
		}

		if (kkk >= iLenOfIn)	// all are zero
		{
			if (pRnd)
				return 0;
			continue;
		}
		break;
	}

	for (i = 0; i < iLenOfIn; i++)
		pbOut[iLenOfOut+i] ^= pbIn[i];
	iLenOfOut += iLenOfIn;
	return iLenOfOut;
}


int VerifyMessage(CECCPublicKey *pk, unsigned char *pMsg, int iLenOfMsg, unsigned char *pSig, int iLenOfSig, unsigned char *pUserName, int iLenOfUserName)
{
	unsigned char hashResult[HASH_256];
	HASH_STATE hashState;
	unsigned char digest[HASH_256];

	PubHashUserId(pk,hashResult, pUserName, iLenOfUserName);
	// printinfohex("ID", hashResult, HASH_256);

	// the 2nd hash
	HashInit(&hashState, hashResult, HASH_256);
	HashPending(&hashState, pMsg, iLenOfMsg);
	HashFinal(digest, &hashState);

	// printinfohex("msgdeg", digest, HASH_256);

	return Verify(pk, digest, HASH_256, pSig, iLenOfSig);
}

int SetPublicKey(CECCPublicKey *pk, CMpi *paramPx,  CMpi *paramPy)
{
	CMpiAssignCMpi(&(pk->m_pntPx), paramPx);
	CMpiRegularize(&(pk->m_pntPx));
	CMpiAssignCMpi(&(pk->m_pntPy), paramPy);
	CMpiRegularize(&(pk->m_pntPy));
	return 1;		// ok
}

int GenerateKey(CECCPrivateKey *sk,  unsigned char *pRandomUser,int iLenOfRandom)
{
	if (pRandomUser)
	{
		if (iLenOfRandom > CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)))
			return 0;	// error
		CMpiInport(&(sk->m_paramD), pRandomUser, iLenOfRandom);
		while(CMpiNotBigger(&(sk->m_paramD), &(g_paramN.m_oModulus)) ==0)
		{
			CMpiSubAssign(&(sk->m_paramD), &(g_paramN.m_oModulus));
		}
		if(CMpiEqualN(&(sk->m_paramD),0) == 1)
			return 0;	// error
	}

	while (1)
	{
		CEllipticCurveMultiplyGByTable3(&(sk->m_pntPx),&(sk->m_pntPy),&(sk->m_paramD));

		if(CMpiEqualN(&(sk->m_pntPy),0)==1)
			return 0;
		break;
	}
	return 1;		// ok
}

int SetPrivateKey(CECCPrivateKey *sk, CMpi *paramD, int fComputePubKey)
{
	if(CMpiBigger(paramD,0) ==0)
		return 0;

	if(CMpiNotBigger(paramD, &(g_paramN.m_oModulus)) ==0)
		return 0;
	
	CMpiAssignCMpi(&(sk->m_paramD), paramD);
	CMpiRegularize(&(sk->m_paramD));

	if (fComputePubKey == 1)
	{
		CEllipticCurveMultiplyGByTable3(&(sk->m_pntPx), &(sk->m_pntPy), &(sk->m_paramD));
		if(CMpiEqualN(&(sk->m_pntPy),0) == 1)
			return 0;
	}
	return 1;		// ok
}

int SetPrivateKeyDirect(CECCPrivateKey *sk, CMpi *paramD,  CMpi *paramPx, CMpi *paramPy)
{
	CMpiAssignCMpi(&(sk->m_paramD), paramD);
	CMpiRegularize(&(sk->m_paramD));
	
	CMpiAssignCMpi(&(sk->m_pntPx), paramPx);
	CMpiRegularize(&(sk->m_pntPx));
	
	CMpiAssignCMpi(&(sk->m_pntPy), paramPy);
	CMpiRegularize(&(sk->m_pntPy));
	return 1;		// ok
}

int Sign(CECCPrivateKey *sk,unsigned char *pOut, unsigned char *pIn, int iLen, unsigned char *pRnd, int iLenOfRnd)
{
	int iRetLen;
	CMpi *rnd = NULL;
	CMpi *x =NULL;
	CMpi *tmp = NULL;
	CMpi *s = NULL;

	CMpl *lltmp = NULL;
	CMpl *cmpltemp = NULL; // temp us e

	rnd = (CMpi *)malloc(sizeof(CMpi));
	x = (CMpi *)malloc(sizeof(CMpi));
	tmp = (CMpi *)malloc(sizeof(CMpi));
	s = (CMpi *)malloc(sizeof(CMpi));

	lltmp = (CMpl *)malloc(sizeof(CMpl));
	cmpltemp = (CMpl *)malloc(sizeof(CMpl)); // temp us e

	while (1)
	{
		if (!pRnd)
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 0;
		}
		CMpiInit(rnd);
		if(CMpiInport(rnd,pRnd, iLenOfRnd)==0)
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 0;
		}
		while(CMpiBigger(rnd, &(g_paramN.m_oModulus))==1)
			CMpiSubAssign(rnd,&(g_paramN.m_oModulus));
		if(CMpiEqualN(rnd,0) == 1)
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 0;
		}
		if(CMpiEqualCMpi(rnd, &(g_paramN.m_oModulus)) == 1)
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 0;
		}
		CMpiInit(x);  CMpiInit(tmp);
		CEllipticCurveMultiplyGByTable3(x, tmp, rnd);
		if(CMpiInport(tmp,pIn,iLen) == 0)
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 7;
		}
		CMplInit(lltmp); CMplInit(cmpltemp);
		CMplAssignCMpi(lltmp,x);
		CMplAssignCMpi(cmpltemp,tmp);
		CMplAddAssign(lltmp,cmpltemp);
		CMplModAssign(x,lltmp,&(g_paramN.m_oModulus));
		if(CMpiEqualN(x,0) == 1)
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 0;
		}
		CMpiInit(s);
		CMpiAdd(s,x,rnd);
		if(CMpiEqualCMpi(&(g_paramN.m_oModulus),s) == 1)
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 0;
		}

		/*if ((x == 0) || (g_paramN.m_oModulus == x+rnd))
		{
			return 0;
		}*/ //cqw
		CMpiMultiByCMpi(lltmp,x,&(sk->m_paramD));
		CMplModAssign(s,lltmp,&(g_paramN.m_oModulus));
		CMpiSubAssign(rnd,s);
		while(CMpiIsNegative(rnd)==1)
		{
			CMpiAddAssign(rnd,&(g_paramN.m_oModulus));
		}

		CMpiInitN(tmp,1);
		CMpiAddAssign(tmp, &(sk->m_paramD));
		CModulusBinaryInverse(s,&g_paramN,tmp);
		CMpiMultiByCMpi(lltmp,s,rnd);
		CMplModAssign(s,lltmp,&(g_paramN.m_oModulus));
		if(CMpiEqualN(s,0)==0)
			break;
		else
		{
			free(rnd);free(x);free(tmp);free(s);
			free(lltmp);free(cmpltemp);
			return 0;
		}
	}
	iRetLen = CMpiExport(x, pOut, CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
	iRetLen += CMpiExport(s, pOut+iRetLen, CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
	free(rnd);free(x);free(tmp);free(s);
	free(lltmp);free(cmpltemp);
	return iRetLen;
}

int Decrypt(CECCPrivateKey *sk, unsigned char *pbCipher1, int iLenOfCipher1, unsigned char *pbX2, unsigned char *pbY2)
{
	CMpi *x = NULL;
	CMpi *y = NULL;
	CMpi *x2 = NULL;
	CMpi *y2 = NULL;
	CMpi *rd = NULL;

	x = (CMpi *) malloc(sizeof(CMpi));
	y = (CMpi *) malloc(sizeof(CMpi));
	x2 = (CMpi *) malloc(sizeof(CMpi));
	y2 = (CMpi *) malloc(sizeof(CMpi));
	rd = (CMpi *) malloc(sizeof(CMpi));

	CMpiInit(x); CMpiInit(y);CMpiInit(rd);
//	if (!ImportPoint(pbCipher1, iLenOfCipher1, x, y)
	if( (CMpiInport(x,pbCipher1, DCS_ECC_KEY_LENGTH)==0) || (CMpiInport(y,pbCipher1+DCS_ECC_KEY_LENGTH, DCS_ECC_KEY_LENGTH)==0) || (CEllipticCurveCheckPoint(x,y)==0))
	{
		free(x);free(y);free(x2);free(y2);free(rd);
		return 0;		// error
	}
	CMpiInit(x2); CMpiInit(y2);
	
	CMpiAssignCMpi(x2,&(g_paramN.m_oModulus));
	CMpiMultiByN(x2,32); //32 can be a random
	CMpiAdd(rd,&(sk->m_paramD),x2);
	CMpiInit(x2);

	CEllipticCurveMultiplyPubByTable5(x2,y2, &(sk->m_paramD),x,y);
	if(CMpiEqualN(y2,0) == 1)
	{
		free(x);free(y);free(x2);free(y2);free(rd);
		return 0;		// error
	}
	CMpiExport(x2, pbX2, CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
	CMpiExport(y2, pbY2, CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus)));
	free(x);free(y);free(x2);free(y2);free(rd);
	return CMpiGetLengthInBytes(&(g_paramFieldP.m_oModulus));
}
int SignMessage(CECCPrivateKey *sk, unsigned char *pOut, unsigned char *pMsg, int iLenOfMsg, unsigned char *pUserName, int iLenOfUserName, unsigned char *pRnd, int iLenOfRnd)
{
	unsigned char hashResult[HASH_256];
	unsigned char digest[HASH_256];
	HASH_STATE hashState;

	PriHashUserId(sk,hashResult, pUserName, iLenOfUserName);

	// the 2nd hash
	HashInit(&hashState, hashResult, HASH_256);
	HashPending(&hashState, pMsg, iLenOfMsg);
	HashFinal(digest, &hashState);

	return Sign(sk,pOut, digest, HASH_256, pRnd, iLenOfRnd);
}

int AuthenticateMsg(unsigned char *pDigest, const unsigned char *pSecret, const unsigned char *pMsg, int iLenOfMsg)
{
	HASH_STATE hashState;
	HashInit(&hashState, pSecret, DCS_ECC_KEY_LENGTH);
	HashPending(&hashState, pMsg, iLenOfMsg);
	HashPending(&hashState, pSecret+DCS_ECC_KEY_LENGTH, DCS_ECC_KEY_LENGTH);
	HashFinal(pDigest, &hashState);

	return HASH_256;
}


int DecryptMessage(CECCPrivateKey *sk, unsigned char *pbOut,  unsigned char *pbIn, int iLenOfIn)
{
	int i;
	unsigned char secret[MPI_LENGTH*4*2];
	int iLenOfOut,iLenOfSecret;
	unsigned char digest[HASH_256];

	if (iLenOfIn <= (2*DCS_ECC_KEY_LENGTH+HASH_256))
		return 0;

	if (!Decrypt(sk,pbIn, 2*DCS_ECC_KEY_LENGTH, secret, secret+DCS_ECC_KEY_LENGTH))
		return 0;	// error

	iLenOfOut = iLenOfIn - (2*DCS_ECC_KEY_LENGTH)-HASH_256;
	iLenOfSecret = 2*DCS_ECC_KEY_LENGTH;

	KDF(pbOut, iLenOfOut, secret, iLenOfSecret);
	for (i = 0; i < iLenOfOut; i++)
		pbOut[i] ^= pbIn[iLenOfSecret+HASH_256+i];

	AuthenticateMsg(digest, secret, pbOut, iLenOfOut);
	i = 0;
	while (i < HASH_256)
	{
		if (digest[i] != pbIn[iLenOfSecret+i])
			return 0;
		i++;
	}
	return iLenOfOut;
}

void CEllipticCurveFinal()
{
	if(g_tablePntG != NULL)
	{
		free(g_tablePntG);
		g_tablePntG = NULL;
	}
}
